2

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

我试过在主题和电子邮件周围使用引号,但又没有。无论哪种方式都会产生相同的结果。

我究竟做错了什么?

4

1 回答 1

6

来自man mail

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

它期待消息的正文。用于<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
于 2012-07-02T17:48:45.200 回答