過去問ドリル

オリジナル問題 LinuCレベル1試験 問題 問10

GNUとUnixのコマンド/ストリーム、パイプ、リダイレクトの使用

パイプ | を使って複数のコマンドをつないだとき、シェルの終了ステータス $? にデフォルトで格納されるのはどれか。

出典:オリジナル問題 LinuCレベル1試験 問題 問10

正解:A

解説

bashのデフォルト動作(pipefailオプションが無効な状態)では、パイプラインの終了ステータス $? には、パイプライン中の最後のコマンドの終了ステータスが格納されます。途中のコマンドが失敗していても、最後のコマンドが成功すれば $? は0になります。この挙動を変えたい場合は set -o pipefail を使います。

選択肢ごとの解説

  • A正しい。デフォルトでは、パイプライン全体の終了ステータスは最後のコマンドの終了ステータスになります。
  • B誤り。最初のコマンドの終了ステータスがデフォルトで採用されるわけではありません。
  • C誤り。デフォルトでは最大値を採用する動作にはなりません(pipefailを設定しても最大値ではなく、いずれかが非0なら非0になる動作です)。
  • D誤り。パイプライン中のコマンドが失敗すれば、$?が0以外になることもあります。
LinuCレベル1の過去問を演習モードで解く