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 未満または等しいかどうかをチェックします。true の場合、本文を実行し、算術のために $((...)) を使用してカウンターをインクリメントし、再びチェックします。

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

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

チャレンジ

簡単

counter.sh という名前のシェルスクリプトを作成し、while ループを使用して 1 から 4 までの数を印刷します。

スクリプトは以下を行うべきです:

  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 で終了します。

チートシート

while ループは、その条件が true のままである限り実行を続けます:

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

ループは各イテレーションの前に条件をチェックします。カウンタをインクリメントするための算術演算には $((...)) を使用します。

while ループは、事前に必要なイテレーション数をわからない場合に便利です。例えば、特定のユーザー入力を待つ場合などです:

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

無限ループを避けるため、ループ内の何かが最終的に条件を変更するように常に確保してください。

自分で試してみよう

ターミナル
quiz icon腕試し

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

基礎のすべてのレッスン