grepは結果が見つかるとerror_logとEメールのみを検索しますか?

grepは結果が見つかるとerror_logとEメールのみを検索しますか?

Grepを使用してファイルを検索し、結果に応じて電子メールを送信できますか?

使ってきた

grep SEARCHSTRING /logs/error_log | mailx -s subject [email protected]

ただし、NULLが発生した場合は電子メールを送信したくありません(結果なし)。

答え1

mailxgrepコマンドが成功を返した場合、つまり一致するものが見つかったら、次のことを実行できます。

body="$(grep SEARCHSTRING /logs/error_log)" && echo "$body" | mailx -s subject [email protected]

出力grep(存在する場合)を変数に保存し、コマンドが成功した場合はbodyメッセージgrep本文として実行しますmailx$body

答え2

output="$(grep SEARCHSTRING /logs/error_log)"
test -n "$output" && echo "$output" | mailx -s subject [email protected]

関連情報