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

バッシュブレイクして続行

ループを使用すると、特定の条件が満たされるまで、1つ以上のコマンドを複数回実行できます。ただし、ループのフローを変更してループを終了するか、現在の反復のみを終了する必要がある場合があります。

Bashでは、break およびcontinue ステートメントを使用すると、ループの実行を制御できます。

バッシュbreak ステートメント#

break ステートメントは現在のループを終了し、終了したループに続くコマンドにプログラム制御を渡します。 forを終了するために使用されます 、whileuntil 、またはselect loop.s breakの構文 ステートメントは次の形式を取ります:

break [n]

[n] はオプションの引数であり、1以上である必要があります。[n]の場合 が指定されている場合、n番目の囲みループが終了します。 break 1 breakと同等です 。

breakの使用方法をよりよく理解するため ステートメント、次の例を見てみましょう。

以下のスクリプトでは、whileの実行 現在の反復アイテムが2に等しくなると、ループが中断されます :

i=0

while [[ $i -lt 5 ]]
do
  echo "Number: $i"
  ((i++))
  if [[ $i -eq 2 ]]; then
    break
  fi
done

echo 'All Done!'
Number: 0
Number: 1
All Done!

breakの使用例を次に示します。 ネストされたfor内のステートメント ループします。

引数[n]の場合 与えられていない、break 最も内側の囲みループを終了します。外側のループは終了していません:

for i in {1..3}; do
  for j in {1..3}; do
    if [[ $j -eq 2 ]]; then
      break
    fi
    echo "j: $j"
  done
  echo "i: $i"
done

echo 'All Done!'
j: 1
i: 1
j: 1
i: 2
j: 1
i: 3
All Done!

外側のループを終了する場合は、break 2を使用します 。引数2 breakに通知します 2番目の囲みループを終了するには:

for i in {1..3}; do
  for j in {1..3}; do
    if [[ $j -eq 2 ]]; then
      break 2
    fi
    echo "j: $j"
  done
  echo "i: $i"
done

echo 'All Done!'
j: 1
All Done!
バッシュcontinue ステートメント#

continue ステートメントは、現在の反復の囲んでいるループの本体内の残りのコマンドをスキップし、プログラム制御をループの次の反復に渡します。

continueの構文 ステートメントは次のとおりです。

continue [n]

[n] 引数はオプションであり、1以上にすることができます。[n]の場合 が与えられると、n番目の囲みループが再開されます。 continue 1 continueと同等です 。

以下の例では、現在の反復アイテムが2に等しくなると 、continue ステートメントにより、実行はループの最初に戻り、次の反復を続行します。

i=0

while [[ $i -lt 5 ]]; do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!

次のスクリプトは、1から数値を出力します 50まで 9で割り切れる 。

数値が9で割り切れない場合 、continue ステートメントはechoをスキップします コマンドを実行し、ループの次の反復に制御を渡します。

for i in {1..50}; do
  if [[ $(( $i % 9 )) -ne 0 ]]; then
    continue
  fi
  echo "Divisible by 9: $i"
done
Divisible by 9: 9
Divisible by 9: 18
Divisible by 9: 27
Divisible by 9: 36
Divisible by 9: 45

結論#

ループはプログラミング言語の基本的な概念の1つです。 Bashなどのスクリプト言語では、ループは反復的なタスクを自動化するのに役立ちます。

break ステートメントは、現在のループを終了するために使用されます。 continue ステートメントは、ループの現在の反復を終了し、次の反復を開始するために使用されます。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Linux
  1. &&および||後のBashラインの継続文書化されていますか?

  2. Bash初心者シリーズ#8:Bashのループ

  3. Bash の For ループと While ループの例

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

  2. ループに巻き込まれましたか? Awk While、Do While、For ループ、Break、Continue、Exit の例

  3. Bash for ループの例

  1. Bash Forループを並列化しますか?

  2. Bash while ループで and を使用する

  3. Linux バッシュ。 for ループと関数、数値の加算