如何通过 shell 脚本向其他用户发送邮件/写信?如何发送 EOF?

如何通过 shell 脚本向其他用户发送邮件/写信?如何发送 EOF?
if [ who | grep $user | grep pts ]
then
              write $user
                   message here
                   EOF
fi

在这里如果我执行它,它会在写入时阻止,我必须手动输入一条消息,然后按Ctrl+ d

有没有办法通过程序发送消息和EOF?

答案1

你可以将输入从一个程序传输到另一个程序像这样:

echo "message here"|write $user

或者像这样:

cat /tmp/message|write $user

答案2

您可能正在寻找以下编写风格(相当于其他方法)

write $user <<EOF
    message here
    as opposed to the
       echo "asd" | write $user
    method, using here-doc redirection transparently allows multiple lines
    and reads everything until seeing the delimiter
    so the sent message end here:
EOF

注意:你不是在这里直接“发送 EOF”,shell 只是将单词“EOF”理解为你选择的结束输入的标记并将在那里结束输入 - 并且在这种情况下 write 不会要求你按 ctrl+d,因为它正在从 shell 传输给它的内容中读取。

注 2:你可能会发现了解以下内容很有用每一个Unix 世界中的命令行工具允许使用这种默认的 shell 技巧,因为它们只依赖于 stdin 这个非常通用的概念 - 与许多其他工具一样,write 将从管道传输到它的内容中读取 - 并且只有在不存在输入并且用户输入方法有意义时才以交互方式询问用户输入。

欲了解更多信息,这里有一个问题专门询问这个问题:https://stackoverflow.com/questions/2500436/how-does-cat-eof-work-in-bash

相关内容