1.06.2基礎
変数nを1から始め、nが3以下の間だけ値を表示して1ずつ増やす。
ループ開始行として適切なのはどれか。
× 不正解
while CONDITION; do ...; doneはCONDITIONが終了状態0の間、本体を繰り返す。数値比較にはtestの-leを使える。
詳細解説
誤り
for [ "$n" -le 3 ]; doforへ条件コマンドを直接置く構文ではない。
標準的なfor構文では条件コマンドをこの位置へ直接書かない。値一覧形式またはBashの算術forなど別の文法が必要である。
正しい
while [ "$n" -le 3 ]; dotestが成功している間、ループ本体を反復する。
whileは[ "$n" -le 3 ]が0で終了する間、本体を繰り返す。nを増やせば1から3までで停止する。
誤り
case [ "$n" -le 3 ]; docaseの構文でも条件反復でもない。
caseはdoを使う反復構文ではなく、値をパターン分岐する。数値条件を繰り返し評価しない。
誤り
if [ "$n" -le 3 ]; doifはthenを用いる条件分岐で、反復しない。
ifは条件後にthenを用いて一度だけ分岐する。条件が真でも自動で先頭へ戻らない。
実際に確かめる
一時的な検証環境で実行できる例です。
sh -c 'n=1; while [ "$n" -le 3 ]; do printf "%s\n" "$n"; n=$((n + 1)); done'期待される結果
1、2、3を1行ずつ表示理解のポイント
- whileは条件反復
- test成功中に続行
- カウンター更新が必要
確認時の注意
- 確認環境: POSIX sh / 状態変更なし
- 変数が整数でない場合、testの数値比較はエラーになる。
基礎のおさらい
testコマンド
[ expression ]はtestコマンドの別形式で、-leは整数の以下比較を行う。
終了条件
本体でnを更新しないと条件が変わらず無限ループになる。反復変数の変化を確認する。
問題IDKL-102-922
確認環境POSIX sh / 状態変更なし
最終技術確認2026-08-13
誤り・権利侵害を報告