1.03.3標準
run-checkの標準出力と標準エラーを両方ともgrepへ渡し、FAILを含む行を抽出する。
POSIX形式で記述する。
適切なコマンド列はどれか。
× 不正解
run-check側で2>&1を行ってからパイプすると、標準エラーも標準出力と同じパイプ書込端へ接続される。
詳細解説
誤り
run-check | grep FAILstdoutだけがパイプへ入り、stderrは元の端末へ出る。
誤り。run-checkのFAILがstderr側だけに出る場合、grepのstdinへ届かず端末へ直接表示される。
正しい
run-check 2>&1 | grep FAILstderrをstdoutへ複製してから、そのstdoutをgrepへパイプする。
正しい。run-checkのfd 2をパイプ書込端であるfd 1へ複製してから、両streamをgrepへ流す。
誤り
run-check 2> grep FAILgrepというファイルへstderrを保存しようとし、パイプ処理にならない。
誤り。2>はgrepというファイル名へのredirectで、grepプロセスをパイプの右辺として起動しない。
誤り
run-check | grep FAIL 2>&1grep自身のstderrをgrepのstdoutへ複製するだけで、run-checkのstderrをパイプへ入れない。
誤り。2>&1が右側grepへ属し、左側run-checkのstderrはパイプへ合流しない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'echo OK; echo FAIL-error >&2' 2>&1 | grep FAIL期待される結果
FAIL-error理解のポイント
- pipeは既定でstdoutだけ
- 2>&1でstderrを合流
- 合流位置は左command側
確認時の注意
- 確認環境: POSIX shell / grep / 生成出力
基礎のおさらい
合流後の区別
一度同じパイプへ合流すると、後続grepは元がstdoutかstderrかを通常区別できない。
Bash |&
Bashではcommand |& filterがcommand 2>&1 | filterの短縮形として使える。
問題IDKL-101-483
確認環境POSIX shell / grep / 生成出力
最終技術確認2026-08-13
誤り・権利侵害を報告