[Linux] continue文の使い方 – ループ処理の中断
continue
文は、ループ処理内で特定の条件が満たされた場合に、その回の処理をスキップし、次のループの反復に進むために使用されます。
for
、while
、until
などのループで利用可能です。
continue
文が実行されると、ループの残りの処理はスキップされ、次の反復が開始されます。
例えば、for
ループ内で特定の条件に一致する場合にその回の処理を飛ばしたい場合に便利です。
- continue文の基本的な使い方
- 条件分岐での活用方法
- 応用例としての使用シーン
- 注意点とパフォーマンスへの影響
- 使い分けのポイントと代替手法
continue文とは
continue
文は、Bashスクリプトにおいてループ処理を制御するための命令です。
ループ内で特定の条件が満たされた場合に、そのループの現在の反復をスキップし、次の反復に移行することができます。
これにより、特定の条件に基づいて処理を柔軟に制御することが可能になります。
例えば、数値のリストを処理する際に、特定の値をスキップしたい場合にcontinue
文を使用することで、無駄な処理を避けることができます。
continue
文は、for
、while
、until
などのループ構文と組み合わせて使用され、スクリプトの可読性や効率を向上させる役割を果たします。
continue文の基本的な使い方
forループでのcontinue文の使用例
for
ループ内でcontinue
文を使用することで、特定の条件を満たす場合に次の反復にスキップすることができます。
以下は、1から10までの数値の中で偶数をスキップする例です。
for i in {1..10}; do
if (( i % 2 == 0 )); then
continue # 偶数の場合は次の反復へ
fi
echo $i
done
1
3
5
7
9
whileループでのcontinue文の使用例
while
ループでも同様にcontinue
文を使用できます。
以下は、1から10までの数値をカウントし、5をスキップする例です。
i=1
while [ $i -le 10 ]; do
if [ $i -eq 5 ]; then
((i++))
continue # 5の場合は次の反復へ
fi
echo $i
((i++))
done
1
2
3
4
6
7
8
9
10
untilループでのcontinue文の使用例
until
ループでもcontinue
文を使用することができます。
以下は、1から10までの数値をカウントし、偶数をスキップする例です。
i=1
until [ $i -gt 10 ]; do
if (( i % 2 == 0 )); then
((i++))
continue # 偶数の場合は次の反復へ
fi
echo $i
((i++))
done
1
3
5
7
9
continue文を使った条件分岐
if文とcontinue文の組み合わせ
if
文とcontinue
文を組み合わせることで、特定の条件に基づいてループの処理をスキップすることができます。
以下は、1から10までの数値の中で3の倍数をスキップする例です。
for i in {1..10}; do
if (( i % 3 == 0 )); then
continue # 3の倍数の場合は次の反復へ
fi
echo $i
done
1
2
4
5
7
8
10
case文とcontinue文の組み合わせ
case
文を使用して、複数の条件に基づいてcontinue
文を使うことも可能です。
以下は、1から10までの数値の中で1、3、5をスキップする例です。
for i in {1..10}; do
case $i in
1|3|5)
continue # 1、3、5の場合は次の反復へ
;;
esac
echo $i
done
2
4
6
7
8
9
10
複数条件でのcontinue文の使用
複数の条件を組み合わせてcontinue
文を使用することもできます。
以下は、1から20までの数値の中で偶数と5の倍数をスキップする例です。
for i in {1..20}; do
if (( i % 2 == 0 )) || (( i % 5 == 0 )); then
continue # 偶数または5の倍数の場合は次の反復へ
fi
echo $i
done
1
3
7
9
11
13
17
19
continue文の応用例
ネストされたループでのcontinue文の使い方
ネストされたループ内でcontinue
文を使用することで、内側のループの処理をスキップすることができます。
以下は、2次元配列の中で特定の値をスキップする例です。
array=(1 2 3 4 5)
for i in "${array[@]}"; do
for j in {1..3}; do
if [ $i -eq 3 ]; then
continue # iが3の場合、内側のループをスキップ
fi
echo "i: $i, j: $j"
done
done
i: 1, j: 1
i: 1, j: 2
i: 1, j: 3
i: 2, j: 1
i: 2, j: 2
i: 2, j: 3
i: 4, j: 1
i: 4, j: 2
i: 4, j: 3
i: 5, j: 1
i: 5, j: 2
i: 5, j: 3
continue文を使った特定の値のスキップ
特定の値をスキップするためにcontinue
文を使用することができます。
以下は、1から10までの数値の中で4と7をスキップする例です。
for i in {1..10}; do
if [[ $i -eq 4 || $i -eq 7 ]]; then
continue # 4または7の場合は次の反復へ
fi
echo $i
done
1
2
3
5
6
8
9
10
ファイル処理でのcontinue文の活用
ファイルの行を処理する際に、特定の条件を満たす行をスキップするためにcontinue
文を使用することができます。
以下は、ファイル内の空行をスキップする例です。
while IFS= read -r line; do
if [[ -z $line ]]; then
continue # 空行の場合は次の反復へ
fi
echo "$line"
done < "sample.txt"
(sample.txtの空でない行が出力される)
continue文を使ったエラーハンドリング
continue
文を使用して、エラーが発生した場合に処理をスキップすることができます。
以下は、数値のリストを処理し、数値以外の入力をスキップする例です。
for value in 1 2 a 4 5; do
if ! [[ $value =~ ^[0-9]+$ ]]; then
continue # 数値でない場合は次の反復へ
fi
echo "Processing number: $value"
done
Processing number: 1
Processing number: 2
Processing number: 4
Processing number: 5
continue文を使う際の注意点
無限ループに注意
continue
文を使用する際には、無限ループに陥る可能性に注意が必要です。
特に、ループの条件が適切に更新されない場合、continue
文によってループが永遠に続くことがあります。
以下の例では、i
の値が更新されないため、無限ループが発生します。
i=1
while [ $i -le 10 ]; do
if [ $i -eq 5 ]; then
continue # 5の場合は次の反復へ
fi
echo $i
# iの値が更新されていないため、無限ループになる
done
このような状況を避けるためには、continue
文を使用する際に、ループの条件が適切に更新されることを確認することが重要です。
continue文の使いすぎによる可読性の低下
continue
文を多用すると、スクリプトの可読性が低下する可能性があります。
特に、複雑な条件分岐やネストされたループの中でcontinue
文を多く使用すると、コードの流れが分かりにくくなります。
以下の例では、continue
文が多用されており、処理の流れが把握しづらくなっています。
for i in {1..10}; do
if [ $i -eq 2 ]; then
continue
fi
if [ $i -eq 5 ]; then
continue
fi
if [ $i -eq 8 ]; then
continue
fi
echo $i
done
このような場合は、条件をまとめて1つのif
文にすることで、可読性を向上させることができます。
continue文とスクリプトのパフォーマンス
continue
文自体は軽量な命令ですが、ループの中で頻繁に使用される場合、スクリプト全体のパフォーマンスに影響を与えることがあります。
特に、大量のデータを処理する際に、continue
文が多く含まれると、処理速度が遅くなる可能性があります。
以下の例では、無駄なcontinue
文が多く含まれており、パフォーマンスに影響を与えています。
for i in {1..100000}; do
if [ $((i % 2)) -ne 0 ]; then
continue # 奇数の場合は次の反復へ
fi
# 偶数の処理
done
このような場合は、条件を見直し、必要な処理を効率的に行うように工夫することが重要です。
よくある質問
まとめ
この記事では、Bashにおけるcontinue
文の使い方やその応用例、注意点について詳しく解説しました。
continue
文は、ループ処理の中で特定の条件を満たす場合に次の反復に移行するための重要な命令であり、適切に使用することでスクリプトの効率を向上させることができます。
今後は、実際のスクリプト作成においてcontinue
文を活用し、より柔軟で効率的なコードを書くことを目指してみてください。