[Bash] pipefail でパイプ途中のコマンド失敗を検出する
作成日: 2026年09月30日
Bash では通常、パイプでつないだコマンド全体の終了ステータスは最後のコマンドで決まります。
set -o pipefail を有効にすると、途中のコマンドが失敗した場合もパイプライン全体を失敗として扱えます。
false | true
echo "$?"
set -o pipefail
false | true
echo "$?"
実行結果は下記のとおりです。
0
1
最初の false | true では最後の true が成功するため終了ステータスは 0 です。
pipefail を有効にした後は、false の失敗がパイプライン全体の終了ステータスに反映されます。