Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为另一个用户编写写命令脚本_Bash_Shell - Fatal编程技术网

Bash 为另一个用户编写写命令脚本

Bash 为另一个用户编写写命令脚本,bash,shell,Bash,Shell,我正在测试一个脚本,以便将预定义消息写入另一个用户。我开始尝试给自己写信(在同一台机器上登录两次)。脚本将挂起而不传递消息,直到我在发送登录名上使用ctrl+c手动终止,此时接收登录名仅显示我发送了EOF。脚本如下: #!/bin/bash write myName message !kill $$ 即使我取消对kill命令的注释,write命令也不会看到下面的消息。当我用ctrl+c对发送者进行术语设置时,我看到以下内容 [....]$ ./writeScript.sh write: myN

我正在测试一个脚本,以便将预定义消息写入另一个用户。我开始尝试给自己写信(在同一台机器上登录两次)。脚本将挂起而不传递消息,直到我在发送登录名上使用ctrl+c手动终止,此时接收登录名仅显示我发送了EOF。脚本如下:

#!/bin/bash
write myName
message
!kill $$
即使我取消对kill命令的注释,write命令也不会看到下面的消息。当我用ctrl+c对发送者进行术语设置时,我看到以下内容

[....]$ ./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 myName@myPlace on pts/143 at 09:53 ...
EOF

如何使此邮件成功发送?谢谢。

您需要输入才能写入。比如:

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

您需要输入以进行写入。比如:

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

第二个建议有效,但第一个建议无效。如何修改“管道”命令以发送多条单独的线?我尝试了“echo m1 | echo m2 | write myName”,只发送了第二条消息(可能是因为echo试图通过管道发送到echo,这太愚蠢了)。Herdeoc(第一个示例)应该可以工作,并且是发送多行文本的最佳方式。但是,您也可以执行
echo“text\nover\n multiple\nlines”| write myName
(只需将多行括在引号中)。要使用多个echo,请执行:
{echo m1;echo m2;echo m3;}| write myName
注意,在前面的注释中,我并不建议将文字字符串
\n
嵌入传递给echo的字符串中。相反,我在注释中用
\n
标记文字换行符,这样,如果您要在交互式会话中输入示例,您可以键入
echo“textover…”
第二个建议有效,但第一个建议无效。我如何修改管道命令以发送多个单独的行?我尝试了”echo m1 | echo m2 | write myName“只发送第二条消息(可能是因为echo试图通过管道发送到echo,这太愚蠢了)。herdoc(第一个示例)应该可以工作,并且是发送多行文本的最佳方式。但是,您也可以执行
echo“text\nover\n多行”| write myName
(只需将多行括在引号中)要使用多个echo,请执行:
{echo m1;echo m2;echo m3;}| write myName
注意,在前面的评论中,我并不是建议在传递给echo的字符串中嵌入文字字符串
\n
。相反,我是在评论中用
\n
标记文字换行符,这样,如果您要在交互式会话中输入示例,您可以键入
echo”textover….