if [ who | grep $user | grep pts ]
then
write $user
message here
EOF
fi
在这里如果我执行它,它会在写入时阻止,我必须手动输入一条消息,然后按Ctrl+ d。
有没有办法通过程序发送消息和EOF?
答案1
答案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