Linuxとコマンドラインの基礎

$ false && echo A || echo B
$ true || echo C; echo D

上の2行をシェルで実行したとき、表示される文字として、正しいものはどれか。

  1. AD だけ
  2. BB と D
  3. 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 は実行されません。
この分野を解く 分野ページへ

Linuxとコマンドラインの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Linuxとコマンドラインの基礎のほかの問題

  1. 上のコマンドを順に実行したときの、2つの echo の出力として、正しいものはどれか。
  2. 上のように、スクリプト s.sh を引数を付けて実行したときの出力として、正しいものはどれか。
  3. シェルスクリプトで、上の if の条件が真になる場合として、正しいものはどれか。
  4. 上の操作の後で、ディレクトリにあるファイルとして、正しいものはどれか。
  5. カレントディレクトリにある実行の権限が付いたスクリプト run.sh を、「run.sh」と入力して実行しようとすると「command not found」になり、「./run.sh」と入力すると実行できた。理由として、正しいものはどれか。