a c*_*der 5 shell shell-script mail-command
我发现调用 mail 命令导致脚本无错误挂起。要关闭脚本,我必须按 ctrl-c 或对进程 ID 发出 kill 命令。
脚本的相关部分如下:
EMAIL_TO="my@email.com"
if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
echo "file exists"
else
echo "file does not exist"
fi
echo "sending mail next..."
mail -s "pdfbackup" "$EMAIL_TO"
echo "mail sent?"
Run Code Online (Sandbox Code Playgroud)
运行此程序时,我看到文本“下一个发送邮件...”,仅此而已。它永远不会返回到提示。
我可以看到脚本仍然在内存中 ps -ax | grep myscript.sh。
我试过在主题和电子邮件周围使用引号,但又一次没有。无论哪种方式都会产生相同的结果。
我究竟做错了什么?
Arc*_*ege 15
该mail
程序期望用户在其标准输入(以 EOF ( Ctrl-D)结尾)上键入消息。您没有重定向标准输入,程序正在等待输入。您可以从/dev/null
(对于空消息)、罐头文件或管道重定向,例如:
echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"
Run Code Online (Sandbox Code Playgroud)
或者
mail -s "pdfbackup" "$EMAIL_TO" < /dev/null
Run Code Online (Sandbox Code Playgroud)
这两个都应该解决问题。