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