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"
donewhile ループには注意してください。条件が決して false にならない場合、ループは永遠に実行されます。
ループ内でカウンターを増やしたり、ユーザー入力に基づいて変数を更新したりするなど、条件が最終的に変化するようにしてください。
チャレンジ
簡単whileループを使って1から4までの数字を出力する、counter.shという名前のシェルスクリプトを作成してください。
スクリプトの要件:
- シバン行(
#!/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))を使ってカウンターを増やすことを忘れないでください。whileループはdoneで終了します。
自分で試してみよう
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Terminalプレイグラウンド