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"
donewhile ループには注意してください。条件が決して false にならないと、ループは永遠に実行されます。
ループ内の何かが最終的に条件を変えるように、必ず確認してください。たとえば、counter をインクリメントしたり、ユーザー input に基づいて変数を更新したりします。
チャレンジ
簡単counter.sh という名前のシェルスクリプトを作成し、while ループを使って 1 から 4 までの数値を表示してください。
スクリプトでは、次のことを行ってください:
- シバン行(
#!/bin/bash)から開始する - 初期値
1のnumという変数を作成する numが 4 以下である限り繰り返し続ける while ループを使用する- ループ内で、現在の数値を次の形式で表示する:
Number: [num] - 各反復の後に、
$((num + 1))を使ってnumを 1 増加させる
スクリプトを実行可能にして、実行してください。出力は次のようになります:
Number: 1
Number: 2
Number: 3
Number: 4ヒント:「以下」の比較には
-leを使用します。無限ループを避けるため、ループ内でnum=$((num + 1))を使って counter を増加させることを忘れないでください。while ループはdoneで終了します。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド