Bash
如果腳本輸出字元串,則發送電子郵件
我發現這一行:
sh script.sh | grep 'NO' 2>&1 > grep.log && /usr/bin/mail -s "grep found something" m@mail.com < grep.log
這會將 script.sh 的輸出寫入 grep.log,然後通過電子郵件將其發送到電子郵件 m@mail.com
有沒有辦法刪除這部分寫入 grep.log 並簡單地郵寄腳本的輸出而不必將其寫入文件?
您可以將輸出擷取到 shell 變數而不是日誌文件:
found_stuff=$(sh script.sh | grep 'NO' 2>&1) && echo "$found_stuff" | /usr/bin/mail -s "grep found something" m@mail.com
(注意:第一行必須是一個普通的變數賦值,而不是
export var=
orlocal var=
ordeclare var=
或類似的東西。在這些情況下,&&
取決於export
etc 命令的退出狀態,而不是grep
。)
要直接發送郵件,您可以使用如下命令:
sh script.sh | grep 'NO' 2>&1 | /usr/bin/mail -s "grep found something" m@mail.com