シェルスクリプトでは、同じ処理を繰り返すときに ループ処理 を使います。
主に以下の種類があります:
forループwhileループuntilループ- ネスト(ループの中のループ)
目次
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 |

コメント