我发现了这一行:
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]