重複の可能性:
別のプロセスにパイプされた終了コードを取得する
あるコマンドの出力を別のコマンドにパイプする場合、最初のコマンドが失敗したことを明示的に確認する方法はありますか?
たとえば、prog
ファイルを処理してSTDOUTに出力する場合:
prog file1 | cmp - file2
prog
明示的な失敗または成功(戻りコードを介して)があったかどうかを確認する方法はありますか?私は一時ファイルを使用せず、2番目のコマンドの出力に依存したくありません。したがって、上記の例では、出力が失敗したかどうかをcmp
確認するために出力を確認しないでください。prog
質問があればこれをやり直してください。)
答え1
あなたが欲しいset -o pipefail
。
Bashのマンページから:
pipefail
If set, the return value of a pipeline is the value of
the last (rightmost) command to exit with a non-zero status,
or zero if all commands in the pipeline exit successfully.
This option is disabled by default.