シェルスクリプトのループ処理について解説

シェルスクリプトでは、同じ処理を繰り返すときに ループ処理 を使います。
主に以下の種類があります:

  1. for ループ
  2. while ループ
  3. until ループ
  4. ネスト(ループの中のループ)
目次

1. for ループ

1-1. リストを繰り返す

#!/bin/bash

for fruit in Apple Banana Orange;
do
    echo "フルーツ: $fruit"
done

出力:

フルーツ: Apple
フルーツ: Banana
フルーツ: Orange

1-2. 範囲を指定して繰り返す

#!/bin/bash

for i in {1..5};
do
    echo "番号: $i"
done

出力:

番号: 1
番号: 2
番号: 3
番号: 4
番号: 5

1-3. ステップを指定

for i in {0..10..2};
do
    echo "偶数: $i"
done

出力:

偶数: 0
偶数: 2
偶数: 4
偶数: 6
偶数: 8
偶数: 10

2. while ループ

while は条件が真 (true) の間、処理を繰り返します。

#!/bin/bash

count=1

while [ $count -le 5 ];
do
    echo "カウント: $count"
    count=$((count + 1))
done

出力:

カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5

💡 ポイント:条件が偽になるとループ終了


3. until ループ

until条件が偽 (false) の間、処理を繰り返します。

#!/bin/bash

count=1

until [ $count -gt 5 ];
do
    echo "カウント: $count"
    count=$((count + 1))
done
  • while と逆の条件でループするイメージ
  • 出力は while と同じ

4. ネストループ(ループの中のループ)

#!/bin/bash

for i in 1 2;
do
    for j in a b;
    do
        echo "$i-$j"
    done
done

出力:

1-a
1-b
2-a
2-b
  • 複数のループを組み合わせて処理を効率化できます

5. break / continue

5-1. break

ループを途中で終了させる

#!/bin/bash

for i in {1..5};
do
    if [ $i -eq 3 ]; then
        break
    fi
    echo $i
done

出力:

1
2

5-2. continue

その回の処理をスキップして次に進む

#!/bin/bash

for i in {1..5};
do
    if [ $i -eq 3 ]; then
        continue
    fi
    echo $i
done

出力:

1
2
4
5

6. ファイルやコマンドの出力をループ処理

#!/bin/bash

# ファイルリストをループ
for file in /tmp/*;
do
    echo "ファイル: $file"
done

# コマンド出力をループ
for user in $(cut -d: -f1 /etc/passwd);
do
    echo "ユーザー: $user"
done

💡 ポイント:for の後ろにリストやコマンド置換の結果を指定できます


まとめ

ループ説明
forリストや範囲を繰り返すfor i in 1 2 3; do …
while条件が真の間繰り返すwhile [ $count -le 5 ]; do …
until条件が偽の間繰り返すuntil [ $count -gt 5 ]; do …
breakループを途中で終了if …; then break
continueループのその回をスキップif …; then continue
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次