Shell脚本挂起邮件命令

a c*_*der 2 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?"
Run Code Online (Sandbox Code Playgroud)

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

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

我已尝试使用主题和电子邮件的引号,并再次没有.无论哪种方式都产生相同的结果.

我究竟做错了什么?

Con*_*ner 6

来自man mail:

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

它期待着信息的一部分.使用<C-d>了新行,并最终以一个空行的消息和<C-d>.或者,您可以为命令提供主体和管道......

echo "This is the body" | mail -s "Subject" "recipient@example.com"
Run Code Online (Sandbox Code Playgroud)

要么

mail -s "Subject" "recipient@example.com" <<< "This is the body"
Run Code Online (Sandbox Code Playgroud)

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

mail -s "Subject" "recipient@example.com" < body_in_file.txt
Run Code Online (Sandbox Code Playgroud)