Shell脚本挂起邮件命令

时间:2012-07-02 17:36:06

标签: shell sendmail

我发现对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?"

在运行时,我看到文本“接下来发送邮件......”,仅此而已。它永远不会返回提示。

我可以看到脚本仍然在内存中使用ps -ax | grep myscript.sh。

我尝试过使用主题和电子邮件的引号,而且没有。无论如何都会产生相同的结果。

我做错了什么?

1 个答案:

答案 0 :(得分:6)

来自man mail

  

发送邮件
  要向一个或多个人发送消息,可以使用参数调用邮件,这些参数是将向其发送邮件的人员的姓名。然后,您需要输入消息,然后在行的开头输入。 “回复”或“始发邮件”下面的部分介绍了可用于帮助您撰写信函的邮件功能。

它期待着一条信息。使用<C-d>表示换行符,并使用空行和<C-d>结束邮件。或者,您可以将命令和管道提供给命令...

echo "This is the body" | mail -s "Subject" "recipient@example.com"

mail -s "Subject" "recipient@example.com" <<< "This is the body"

或者你可以从文件中读取身体..

mail -s "Subject" "recipient@example.com" < body_in_file.txt