如何隐藏空白电子邮件?例如,在以下示例中,我将
some command | mail -s "tables altered on `hostname`" [email protected]
发送消息后我收到以下消息:
Null message body; hope that's ok
这不行。如果没有文本,我不想发送邮件。
答案1
#!/bin/sh
string=`some command`
len=${#string}
if [ "$len" -gt "0" ]
then echo $string | mail -s "tables altered on `hostname`" [email protected]
fi
仅当命令输出至少有 1 个字符长时才会发送邮件,但可能包含空格等。
(上述解决方案有效,但没有必要。man mail
显示 -E 选项):
some command | mail -E -s "tables altered on `hostname`" [email protected]
答案2
答案3
对于某些mail
命令行开关的实现-E
,它相当于--exec
让你执行命令。在这种情况下daharon 的回答效果很好。你甚至可以将其缩短为:
$ mail -E 'set nonullbody' -s Test [email protected]
如果您想测试此行为,请使用echo
带有-n
命令行开关的命令来抑制尾随换行符。
此命令发送一封电子邮件:
$ echo -n "something" | mail -E 'set nonullbody' -s Test [email protected]
但是此命令不会发送电子邮件:
$ echo -n "" | mail -E 'set nonullbody' -s Test [email protected]
答案4
例子:
echo -n“”| mail -E -s“日志消息”[电子邮件保护]
解释:
空字符串有结束符,因此我们必须添加 -n 以在此测试中排除 echo \n (cr)。但如果您的正文不存在,则邮件将退出/停止发送。
来源:
为什么 mail -E 让我发送空消息? http://heirloom.sourceforge.net/mailx/mailx.1.html