如何根据标准输出发送邮件?

时间:2014-08-20 21:43:12

标签: bash email

我只有在stdout中有任何内容时才需要发送电子邮件。现在我发送的邮件每隔10分钟发送一次这样的邮件,即使脚本没有返回任何内容:

/root/script.sh|mail -s topic my@mail.com

如何在null stdout上跳过发送邮件?

2 个答案:

答案 0 :(得分:7)

我发现了更好的解决方案。对邮件命令使用-E选项,如果正文为空,则不会发送电子邮件。邮件手册说明如下。

-E      Do not send messages with an empty body.  This is useful for 
piping errors from cron(8) scripts.

就这样。

/root/script.sh|mail -E -s topic my@mail.com

答案 1 :(得分:2)

您可以尝试:

message=$(/root/script.sh) && [[ ! -z "$message" ]] && mail -s topic my@mail.com  <<< "$message"

含义:

  • script.sh的输出存储到变量
  • 如果script.sh退出且没有错误(退出状态0)
  • 检查变量message
  • 的内容
  • 如果它不是空的
  • 发送电子邮件