プログラムがゼロ以外のコードで終了しない限り、出力(stdoutおよびstderr)を抑制する最善の方法は何ですか?考えている:
quiet_success()
{
file=$(mktemp)
if ! "$@" > "$file" 2>&1; then
cat "$file"
fi
rm -f "$file"
}
そしてquiet_success my_long_noisy_script.sh
を実行しますが、もっと良い方法があるかどうかはわかりません。これは他の人がやらなければならないことだと思います。
コンテキストについては、これを自分のcronスクリプトに追加して、失敗した場合はすべてのメールが送信されるようにしますが、失敗しない場合は送信しません。
終了コードが何をすべきかを知るのを待つ必要があるので、何があっても出力をどこかにバッファリングする必要があります。このようなものがおそらく最も簡単です:
$ output=`my_long_noisy_script.sh 2>&1` || echo $output