continue コマンド

一時停止したジョブをフォアグラウンドに戻して再開します。

概要

continue コマンドはシェル組み込みコマンドで、ループ(for、while、until)の実行を次の繰り返しの先頭から再開し、現在の繰り返しの残りのコマンドをスキップします。シェルスクリプト内で使用され、特定の条件が満たされた場合に即座に次の繰り返しを開始することでループの流れを制御します。

オプション

continue コマンドは従来の意味でのオプションはありませんが、オプションの数値引数を受け付けることができます。

n(数値引数)

どの囲まれたループを継続するかを指定します。デフォルト(引数なし)では、continue は最も内側のループに影響します。

$ for i in 1 2 3; do
>   for j in a b c; do
>     if [ $j = "b" ]; then
>       continue 2  # 外側のループの次の繰り返しにスキップ
>     fi
>     echo "$i $j"
>   done
> done
1 a
2 a
3 a

使用例

ループでの基本的な使い方

$ for i in 1 2 3 4 5; do
>   if [ $i -eq 3 ]; then
>     continue
>   fi
>   echo "Processing item $i"
> done
Processing item 1
Processing item 2
Processing item 4
Processing item 5

条件に基づいた繰り返しのスキップ

$ i=0
$ while [ $i -lt 5 ]; do
>   i=$((i+1))
>   if [ $((i % 2)) -eq 0 ]; then
>     continue
>   fi
>   echo "Odd number: $i"
> done
Odd number: 1
Odd number: 3
Odd number: 5

ヒント:

複雑なループでは注意して使用する

ネストされたループで continue を使用する場合は、どのループに影響するかに注意してください。数値引数がない場合、最も内側のループにのみ影響します。

条件論理と組み合わせる

continue は条件文と組み合わせて特定の条件を満たす繰り返しをスキップするときに最も役立ち、スクリプトの効率を高めます。

読みやすさを考慮する

continue はスクリプトをより効率的にできますが、過度に使用するとコードの理解が難しくなる可能性があります。読みやすさを維持するために慎重に使用しましょう。

よくある質問

Q1. continuebreak の違いは何ですか?

A. continue はループの次の繰り返しにスキップしますが、break はループを完全に終了します。

Q2. ループの外で continue を使用できますか?

A. いいえ、ループの外で continue を使用するとエラーになります。これはループ内でのみ意味を持ちます。

Q3. ネストされたループで特定の外側のループを継続するにはどうすればよいですか?

A. continue n を使用します。ここで n は継続したいループのレベルです(最も内側のループは 1、その外側のレベルは 2、など)。

Q4. continue はすべてのシェルタイプで同じように機能しますか?

A. 基本的な機能は bash、zsh、その他の一般的なシェルで一貫していますが、複雑なスクリプトでは動作に微妙な違いがある場合があります。

参考文献

https://www.gnu.org/software/bash/manual/html_node/Bourne-Shell-Builtins.html

改訂履歴