Menu
CoddyTech

whileループ

CoddyのTerminalジャーニー「基礎」セクションの一部。レッスン 72/82。

何を反復処理するかが正確にわかっている場合、forループは便利です。しかし、ある条件が変わるまでループを続けたい場合はどうでしょうか?そんなときに使うのがwhileループです。

条件が true である限り、while ループは実行を続けます。基本的な構造は次のとおりです。

#!/bin/bash
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

このスクリプトは1から5までの数字を出力します。

ループはcountが5以下かどうかを確認します。条件が真であれば、ループ本体を実行し、算術演算に$((...))を使ってカウンターを増やし、再び確認します。

countが6に達すると、条件が偽になり、ループが停止します。

whileループは、必要な反復回数が事前にわからない場合に最適です。たとえば、ユーザーが「quit」と入力するまで、入力を求め続けることができます。

#!/bin/bash
input=""
while [ "$input" != "quit" ]; do
    read -p "Enter command (quit to exit): " input
    echo "You entered: $input"
done

while ループには注意してください。条件が決して false にならない場合、ループは永遠に実行されます。

ループ内でカウンターを増やしたり、ユーザー入力に基づいて変数を更新したりするなど、条件が最終的に変化するようにしてください。

challenge icon

チャレンジ

簡単

whileループを使って1から4までの数字を出力する、counter.shという名前のシェルスクリプトを作成してください。

スクリプトの要件:

  1. シバン行(#!/bin/bash)から始める
  2. 初期値を1とするnumという変数を作成する
  3. numが4以下である間、繰り返し実行するwhileループを使う
  4. ループ内で、現在の数字を次の形式で出力する:Number: [num]
  5. 各反復の後に$((num + 1))を使ってnumを1増やす

スクリプトに実行権限を付与して実行してください。出力は次のようになります:

Number: 1
Number: 2
Number: 3
Number: 4

ヒント:「以下」の比較には-leを使います。無限ループを避けるため、ループ内でnum=$((num + 1))を使ってカウンターを増やすことを忘れないでください。whileループはdoneで終了します。

自分で試してみよう

ターミナル
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Terminalプレイグラウンド