如果脚本输出字符串则发送电子邮件

如果脚本输出字符串则发送电子邮件

我发现了这一行:

sh script.sh | grep 'NO' 2>&1 > grep.log && /usr/bin/mail -s "grep found something" [email protected] < grep.log

它将 script.sh 的输出写入 grep.log,然后通过电子邮件发送到电子邮件[电子邮件保护]

有没有办法删除写入 grep.log 的部分并简单地邮寄脚本的输出而不必将其写入文件?

答案1

您可以将输出捕获到 shell 变量而不是日志文件:

found_stuff=$(sh script.sh | grep 'NO' 2>&1) &&
    echo "$found_stuff" | /usr/bin/mail -s "grep found something" [email protected]

(注意:第一行必须是普通的变量赋值,而不是export var=local var=declare var=或类似的东西。在这些情况下,&&取决于 etc 命令的退出状态export,而不是grep。)

答案2

要直接发送邮件,您可以使用如下命令:

sh script.sh | grep 'NO' 2>&1 | /usr/bin/mail -s "grep found something" [email protected]

相关内容