プログラムがゼロ以外のコードで終了しない限り、出力(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スクリプトに追加して、失敗した場合はすべて送信し、失敗しない場合は送信しないようにしています。
うん、質問にタイプしただけだ。あなたの提案を適用し、そして私は、コマンドが、同意しなければならないことに責任がある、悲しいかな...
—
dimo414
構文に関する注意事項:コマンドを括弧で囲む必要はありません。
—
マナトワーク
sh
構文ではなく、リダイレクトの順序は逆方向であるため、擬似コードを投稿したと想定しています(> "$file" 2>&1
引用符を追加して使用してください)。