set -o Pipelinefailを使用したときにBashパイプラインで失敗したコマンドを確認する

set -o Pipelinefailを使用したときにBashパイプラインで失敗したコマンドを確認する

set -o pipefail私はスクリプトでいつものように使用します。これはうまく機能し、次のように文書化されています。

curl ... | jq ... | psql ...

しかし、パイプラインのどのコマンドが実際にプロセス全体の失敗を引き起こすのかを確認する方法はありますか?

より簡潔なロギングのみを目的として、この問題を調査していますが、関連文書が見つかりませんでした。

答え1

PIPESTATUS組み込み配列を使用してください:

true | true | false | true | true
declare -p PIPESTATUS
declare -a PIPESTATUS=([0]="0" [1]="0" [2]="1" [3]="0" [4]="0")

関連情報