Menu
Coddy logo textTech

whileループ

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

forループは、反復処理する項目が正確にわかっている場合に便利です。しかし、特定の条件が変わるまでループを続けたい場合はどうでしょうか?そこで登場するのがwhileループです。

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

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

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

ループはcountが5以下かどうかを確認します。真の場合は本体を実行し、算術演算に$((...))を使用してカウンターを増分し、再度確認します。

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

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

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

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

ループ内の何かが最終的に条件を変えるように、必ず確認してください。たとえば、counter をインクリメントしたり、ユーザー input に基づいて変数を更新したりします。

challenge icon

チャレンジ

簡単

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

スクリプトでは、次のことを行ってください:

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

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

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

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

自分で試してみよう

ターミナル
quiz icon腕試し

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

基礎のすべてのレッスン

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