パイプラインコマンドが失敗することを確認してください。

パイプラインコマンドが失敗することを確認してください。

重複の可能性:
別のプロセスにパイプされた終了コードを取得する

あるコマンドの出力を別のコマンドにパイプする場合、最初のコマンドが失敗したことを明示的に確認する方法はありますか?

たとえば、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.

関連情報