OSコマンドの基本動作として、パイプでコマンドを連結すると最後に実行されたコマンドの戻り値が特殊変数"$?"に格納される。 #[例1] コマンド1 | コマンド2 echo $? # コマンド2の戻り値が格納 各コマンドの戻り値の取得方法 ${PIPESTATUS}で取得可能 #[例2] exit 1 | exit 2 | true | false echo ${PIPESTATUS[@]} 1 2 0 1 ${PIPESTATUS}の使いどころ 「例1」で説明すると、「コマンド1が正常終了していること」がコマンド2の前提条件である為、コマンド1のコマンドも含め戻り値チェックが必要な場合。 具体例 パイプでつないだコマンドに戻り値が"0以外"が存在する場合はエラー出力しexitする動作を実装 #[例3] コマンド1 | コマンド2 | コマンド3 echo ${PIPESTATUS[@]}