私はSTDOUTで出力を生成するBashコマンドを持っています。終了コードはゼロまたは非ゼロです。終了コードがゼロでない場合、Bashでコマンド出力を非表示にします。
終了コードがゼロでない場合は出力を非表示にし、終了コードがゼロの場合は出力を表示します。
これを実行するには、コマンドを2回実行する必要はありません。
私はSTDOUTで出力を生成するBashコマンドを持っています。終了コードはゼロまたは非ゼロです。終了コードがゼロでない場合、Bashでコマンド出力を非表示にします。
終了コードがゼロでない場合は出力を非表示にし、終了コードがゼロの場合は出力を表示します。
これを実行するには、コマンドを2回実行する必要はありません。
foo --bar
このスクリプト
mute
を呼び出した場合
#!/bin/bash
temp_file=$(mktemp)
"[email protected]" > temp_file
if [[ $? == 0 ]]; then
cat "$temp_file"
fi
rm "$temp_file"
は、
印刷出力を、それがゼロ
output="$(command)"
if [[ $? -eq 0 ]] ; then
echo "$output"
fi
ステータスコードは、プロセスが終了したときにのみ認識されます。だからあなたが求めていることをする唯一の方法は、そのstdout
を一時ファイルにリダイレクトしてプロセスを実行し、それが終了したらそのステータスコードを調べることです。 0以外の場合は、テンポラリファイルを削除します。ゼロの場合は、テンポラリファイルの内容をstdout
に出力します。
ここですることを自動化するbashスクリプトです:
mute foo --bar
おかげで、時々ソリューションは:-)が、すぐにサイトは私をできるようになるとして受け入れるだろうあまりにも明白である...これは保存しないこと –
ノートの場合最後の改行は正しく行われます。 'IFS'の価値を変えれば修正できると思います。 – redneb
代わりに 'printf" $ output \ n "'を使用しています。 –