2017-07-06 68 views
0

我正在測試腳本以將預定義的消息寫入另一個用戶。我首先嚐試寫信給自己(兩臺登錄在同一臺機器上)。該腳本在沒有傳遞消息的情況下掛起,直到我用發送的登錄名中的ctrl + c手動終止,此時接收登錄名只顯示我發送了EOF。該腳本如下:將寫命令腳本寫入另一個用戶

#!/bin/bash 
write myName 
message 
!kill $$ 

即使我取消註釋kill命令,它像write命令不會看到以下消息。當我用CTRL + C termante發件人,我看到了下面....

[....]$ ./writeScript.sh 
write: myName is logged in more than once; writing to pts/112 (hangs here) 
^C./writeScript.sh: line 3: message: command not found 
Terminated 
[...]$ 

和接收器看到...

Message from [email protected] on pts/143 at 09:53 ... 
EOF 

如何讓我這個消息發送成功?謝謝。

回答

3

您需要輸入才能寫入。喜歡的東西:

#!/bin/bash 
write myName << EOM 
message 
EOM 

或:

echo message | write myName 
+0

第二項建議的工作,雖然第一個沒有。如何修改管道命令以發送多條獨立線路?我試過「echo m1 | echo m2 | write myName」,並且只發送了第二條消息(可能是因爲echo正嘗試管道回顯,這只是愚蠢的)。 – avikarto

+1

heredoc(第一個示例)應該可以工作,並且是發送多行文本的最佳方式。但是,您也可以使用'echo'text \ nover \ nmultiple \ nlines「|寫myName'(只需在引號中加多行) –

+0

要使用多個回聲,請執行:'{echo m1;回聲m2;回波m3; } |寫myName' –

相關問題