LinuCレベル1 シェルおよびスクリプト 問7
シェルおよびスクリプト/シェルスクリプトシェルスクリプトのwhileループに関する説明として、正しいものはどれか。
当サイトのオリジナル問題(LinuCレベル1の出題範囲「シェルおよびスクリプト」に対応。実際の試験問題ではありません)
- Aif文の条件判定には、testコマンドや終了ステータスを使うことはできない
- Bシェルスクリプトにはif文やfor文といった制御構造は存在せず、常に上から順に1行ずつ実行される
- Cfor 変数 in リスト; do ... done は、リストの要素を1つも処理せず常にスキップする
- D条件式が真である間、処理を繰り返す
正解:D
解説
whileループは、条件式が「真」である間処理を繰り返すループです。反対に、条件式が「偽」である間繰り返すのはuntilループの動作です。for 変数 in リスト; do ... done は、リストの各要素を順に変数に代入しながら処理を繰り返す構文で、要素を1つも処理せずスキップするわけではありません。if文の条件判定には、testコマンド(角括弧[ ]も同等)やコマンドの終了ステータス(0なら真、0以外なら偽)を使うことができます。シェルスクリプトにはif・for・while等の制御構造が用意されており、単純な上から下への逐次実行だけではありません。
選択肢ごとの解説
- A誤り。if文の条件判定には、testコマンドやコマンドの終了ステータスを使うことができます。
- B誤り。シェルスクリプトにはif・for・while等の制御構造があり、単純な上から下への逐次実行だけではありません。
- C誤り。for 変数 in リスト; do ... done は、リストの要素を順に処理するループで、要素を1つも処理せずスキップすることはありません。
- D正しい。whileループは条件式が「真」である間処理を繰り返します。「偽である間繰り返す」のはuntilループの動作です。