GNU/Linux >> Linux の 問題 >  >> Linux

Bashの続行:ループを再開する方法

はじめに

続行 ステートメントは、スクリプトループのフローを変更するBashビルトインです。この概念はBashに固有のものではなく、他のプログラミング言語で使用されています。

Bashがどのように続行するかを理解するための最良の方法 ステートメントの動作は、実践的な例によるものです。

このチュートリアルは、Bashの続行の使用方法を示しています Bashスクリプトのステートメント。

前提条件

  • LinuxまたはmacOSを実行しているマシン。
  • 例のテキストエディタ。
  • Bashスクリプトの基本的な知識。

バッシュコンティニューステートメント

バッシュ続行 ステートメントは、ループまたはループステートメントで次の反復を再開します。

構文は次のとおりです。

continue <integer>

続行 ステートメントは、ループに適用された場合にのみ意味があります。整数値は、継続の深さを示します 声明。デフォルトでは、整数は 1です。 番号の記入は必須ではありません。数を増やして、外部ループステートメントを再開します。

続行を使用する ループ制御ステートメントとしてのステートメント。たとえば、続行 ステートメントは、特定の条件を満たすときに、ループ内の現在の反復を終了するのに役立ちます。ループの種類に応じて、プログラムは次の反復で再開するか、ループを再開します。

Bashの継続例

以下は、Bashスクリプトでcontinueステートメントを操作する例と説明です。

次のプライマリループ構造は、ステートメントがどのように機能するかを示しています。

  • forループは、continueと組み合わせると、次の反復で続行されます。
  • continueステートメントは、 whileを再起動します およびまで ループします。

選択 コマンドは、プライマリループ構造ではありませんが、例にも表示されます。ステートメントはループとして機能し、続行 ステートメントは、どのループコマンドでも機能します。

Bashの使用forループを続行

続行を使用する forのフローを制御する場合の条件内のステートメント

#!/bin/bash

for i in {1..10}
do
	if [[ $i == '9' ]]
	then
		echo "Number $i!"
		continue
	fi
	echo "$i"
done
echo "Done!"

コードは次のことを行います:

  • 3行目 forを開始します ループ条件、変数 iを繰り返します 1から 10
  • 5行目 iをチェックします 価値。変数が9に等しい場合 、プログラムはメッセージをエコーし​​、次の反復でループを再開します(3行目
  • 10行目 5行目の条件ステートメントの場合にのみ、数値をコンソールに出力します False

スクリプトを実行して結果を確認します。

出力は、すべての個別の番号をコンソールに出力します。 5行目の条件がTrueと評価されたとき ( $ i =='9' )、コンソールはメッセージをエコーし​​ます。

Bashを使用してネストされたループを続行

続行 ステートメントはネストされたループで機能します 同じように。たとえば、 continue 2を使用します 外側のループを再開するには:

#!/bin/bash

for i in {1..5}
do
        for j in {1..5}
        do
                if [[ $i -eq $j ]]
                then
                        echo "$i = $j"
                        continue 2
                fi
                echo "$i =/= $j"
        done
done

echo "Done!"

プログラムは次のことを行います:

  • 3行目 変数i をインクリメントして、外側のループを開始します 1から 5
  • 5行目 内部のforループを開始し、変数 jをインクリメントします 1から 5 iごとに 増分。
  • 7行目 変数がiかどうかをチェックします およびj 等しい( $ i -eq $ j )。そうである場合は、続行2 ステートメントは、次の反復で外側のループを再開します。ただし、値が異なる場合、プログラムは期待どおりに続行されます。

スクリプトを実行して、プログラムの出力を確認します。

2つの値が等しくなるたびに、最初の数値が増加します。

Bashの使用whileループを続行

以下は、 continue を使用するBashスクリプトの例です。 whileのステートメント ループ:

#!/bin/bash

i=0

while [[ $i -lt 11 ]] 
do
	if [[ "$i" == '9' ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done

各行は次のことを行います:

  • 3行目 変数iを定義します 値を0に設定します
  • 5行目 whileを開始します ループ。終了条件は、 iの場合です。 11未満です
  • 7行目 ifを使用した条件チェックを示します 声明。変数i 9に等しい 、プログラムは行9-11に進みます 。他のすべての場合、コードは13行目にジャンプします 。
  • 9〜11行目 コンソールにメッセージを出力し、 iをインクリメントします 、および続行 ステートメントは5行目でループを再開します 。
  • 13行目と14行目 変数iを出力します コンソールに移動してインクリメントします。

出力を確認するには、ターミナルからスクリプトを実行します。

プログラムはすべての番号をコンソールに出力します。条件ステートメントとcontinueステートメントにより、番号 9に対して別のメッセージが出力されます。

Bashの使用untilループを続行

続行を組み合わせる までのステートメント ループし、特定の値のループ動作を変更するための条件を提供します。たとえば、次のスクリプトを試してください。

#!/bin/bash

i=0

until [[ $i -gt 10  ]]
do
	if [[ $i -eq 9  ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done

コードは変数をインクリメントし、値が 10に達するまでループします 。変数が9に等しい場合 、プログラムは別のメッセージを出力します。 続行 ステートメントはuntilを再起動します ループして通常どおり続行します。

Bashの使用選択ループを続行

選択 コマンドは、プライマリBashスクリプトループではないため、特定のケースです。このコマンドは、ユーザー入力を必要とするメニューを作成します。 続行を使用する ユーザーが選択した値に基づいて異なる出力を提供するステートメント。

例として、次のBashスクリプトを試してください。

#!/bin/bash

PS3="Choose a number: "

select i in {1..10}
do
	echo "Selected number: $i"
	if [[ $REPLY -eq 9 ]]
	then
		echo "Number $i!"
		continue
	fi
done

スクリプトは次の要素で構成されています:

  • PS3 3行目は、 selectの表示メッセージです。 ループ。
  • 5行目 ループ条件を定義し、 1の番号を一覧表示します 10 。変数i ユーザー入力を保存します。
  • 7行目 選択をエコーし​​ます。
  • 8行目 チェックを実行します。ユーザー入力値が9の場合 、プログラムはコンソールにメッセージを出力し、 selectを続行します 次の反復でループします。

スクリプトを実行し、さまざまな値をテストして出力を確認します。

プログラムを終了するには、 CTRLを押します。 + C またはbreakステートメントを追加します。


Linux
  1. Bashスクリプトでifelse条件文を使用する方法

  2. Bashスクリプトをデバッグする方法は?

  3. バッシュを検出する方法>=4.0?

  1. Bashでループを作成する方法

  2. Gnomeセッションを再開する方法は?

  3. bash スクリプト ループ内の cat ステートメントの出力を出力する

  1. Bashでコメントする方法

  2. ターミナルでループバッシュスクリプトを停止する方法は?

  3. bashでループの終了ステータスを取得する方法