Linuxとコマンドラインの基礎
$ false && echo A || echo B
$ true || echo C; echo D上の2行をシェルで実行したとき、表示される文字として、正しいものはどれか。
- AD だけ
- BB と D
- CB と C と D
答えと解説を見る
正解:B. B と D
コマンドは終了するときに終了ステータスを返し、0が成功、0以外が失敗を表します(直前の値は $? で見られます)。「A && B」は A が成功したときだけ B を、「A || B」は A が失敗したときだけ B を実行し、「;」は結果に関係なく次を実行します。1行目では false が失敗するので echo A は飛ばされ、「false && echo A」全体が失敗として扱われて、|| の後の echo B が実行されます。2行目では true が成功するので echo C は実行されず、「;」の後の echo D は必ず実行されるので、表示は B と D になります。
- A. 1行目の echo B も実行されます。&& で飛ばされた後も、その結果は失敗なので、|| の後が実行されます。
- B. 正しい。1行目で B、2行目で D が表示されます。
- C. || は、左のコマンドが失敗したときだけ右を実行します。true は成功なので echo C は実行されません。