LinuCレベル1 シェルおよびスクリプト 問14
シェルおよびスクリプト/シェル環境のカスタマイズbashで「mkdir /tmp/work && cd /tmp/work」と入力したときの動作として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)
- Amkdirの成否に関係なく、続けてcdが必ず実行される
- Bmkdirが失敗した場合に限り、cdが実行される
- Cmkdirが成功した場合に限り、cdが実行される
- Dmkdirとcdが並行して、バックグラウンドで実行される
正解:C
解説
「コマンド1 && コマンド2」は、コマンド1の終了ステータスが0(成功)のときだけコマンド2を実行するリストです。ディレクトリの作成に失敗したのに移動しようとする、といった無駄な処理を防げます。逆に「||」は直前のコマンドが失敗したときだけ次を実行し、「;」は成否に関係なく順に実行します。「&」はコマンドをバックグラウンドで実行させる記号で、&&とは意味が異なります。
選択肢ごとの解説
- A誤り。成否に関係なく順に実行するのは「;」で区切った場合です。&&は直前の成功を条件にします。
- B誤り。直前のコマンドが失敗したときだけ次を実行するのは「||」です。
- C正しい。&&は直前のコマンドの終了ステータスが0のときだけ、次のコマンドを実行します。
- D誤り。コマンドをバックグラウンドで実行するのは末尾の「&」です。&&は条件付きで順に実行します。