シェルでループ処理でcontinue
シェルスクリプトでcontinueを使ってループ処理を制御することができます。
continueは、ループ内で実行される処理をスキップして次のループの反復(イテレーション)に進むためのコマンドです。
continueが呼ばれると、ループの残りの部分は実行されずに、次のループの反復が開始されます。
以下は、forループとwhileループの両方でcontinueを使用する例です。
1. forループでのcontinueの例
次のスクリプトでは、1から5までの数字をループで処理していますが、3のときだけ処理をスキップし、他の数字についてはメッセージを表示します。
#!/bin/bash for i in {1..5} do if [ "$i" -eq 3 ]; then continue # 3のときは処理をスキップ fi echo "Number: $i" done
このスクリプトを実行すると、次の出力が得られます。
Number: 1 Number: 2 Number: 4 Number: 5
3のときにはcontinueが実行され、echoコマンドがスキップされていることがわかります。
2. whileループでのcontinueの例
次のスクリプトでは、whileループを使って1から5までの数字を処理していますが、3のときだけ処理をスキップします。
#!/bin/bash i=1 while [ $i -le 5 ] do if [ "$i" -eq 3 ]; then i=$((i + 1)) continue # 3のときは処理をスキップ fi echo "Number: $i" i=$((i + 1)) done
このスクリプトを実行すると、次の出力が得られます。
Number: 1 Number: 2 Number: 4 Number: 5
3のときにcontinueが実行され、echoコマンドがスキップされています。
3. ネストされたループでのcontinueの使い方
複数のループがネストされている場合、continueはデフォルトで最も内側のループの次の反復に進みます。
しかし、Bashではcontinue NのようにNを指定して、どのループをスキップするかを制御することもできます。
#!/bin/bash for i in {1..3} do echo "Outer loop: $i" for j in {1..3} do if [ "$j" -eq 2 ]; then continue 2 # 外側のループの次の反復に進む fi echo " Inner loop: $j" done done
このスクリプトを実行すると、次の出力が得られます。
Outer loop: 1 Outer loop: 2 Outer loop: 3
j=2のときにcontinue 2が実行され、外側のループの次の反復に直接移行します。
このように、continueを使うことでループの中で特定の条件に応じて処理をスキップし、効率的なループ制御を行うことができます。