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

Bashブレーク:ループを終了する方法

はじめに

Bashスクリプトでは、 break ステートメントは、ループステートメント内の制御を提供するのに役立ちます。終了条件まで待つ代わりに、 break ステートメントは、終了条件が発生する前にループを終了するのに役立ちます。

制御ループステートメント( break 続行)if elif elseなどの条件ステートメントと論理的に組み合わせて、ループ内に特別な状況を作成します。

このチュートリアルでは、 breakの使用方法を説明します Bashスクリプトループで効率的にステートメントを作成します。

前提条件

  • macOSまたはLinuxを実行しているマシン。
  • Bashスクリプトの基本(スクリプトの作成や実行など)
  • nanoなどのBashスクリプトの例を作成するためのテキストエディタ。

bashbreakステートメント

ブレーク ステートメントは、現在のループの反復を終了し、ループを終了します。条件と組み合わせると、 break エンドケースが発生する前にループを終了する方法を提供するのに役立ちます。

バッシュbreak ステートメントは常にループに適用されます。

構文は次のとおりです。

break <integer>

整数値はオプションであり、 1 デフォルトでは。数値は、ブレークの深さを定義します ネストされたループの場合。したがって、ネストされたforループから抜け出すには、 break 2を使用します。

バッシュブレイクの例

以下の例は、 breakを使用してさまざまなループタイプを終了する方法を示しています。 声明。例は次のとおりです。

  • 標準のwhile 、for、および until ループします。
  • 選択 コマンド。

以下の各Bashスクリプトの例には、説明が付いています。

whileループからの脱却

breakを使用します whileを終了するステートメント 特定の条件が実現したときにループします。次のスクリプトはbreakを使用しています while ループ:

#!/bin/bash

i=0

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

echo "Done!"

スクリプトの各行は次のことを行います:

  • 3行目 変数iを定義および設定します 0
  • 5行目 whileを開始します ループ。終了条件は、変数が11未満の場合です( $ i -lt 11
  • 7行目 ifを使用してチェックを実行します 声明。変数が2に等しい場合( "$ i" ==2 )、プログラムは while を終了します Bashを使用してループするbreak 10行目のステートメント 。その場合、コードは16行目にジャンプします 。変数が異なる数値の場合、スクリプトは12行目で期待どおりに続行されます 。

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

プログラムは、 2までの番号を一覧表示します スクリプトを終了します。

breakInsideforループの使用

for ループは変数を自動的にインクリメントします。条件ステートメントを追加してforを終了するには 早めにループし、 breakを使用します 声明。次のコードは、 breakの使用例を示しています。 for ループ:

#!/bin/bash

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

echo "Done!"

整数値が2に等しい場合( $ i =='2' )、プログラムはメッセージを出力し、 forを終了します breakのおかげでループします ステートメント。

その結果、スクリプトを実行すると、変数 iのときにプログラムが終了します。 2に到達し、コードの最後の行にジャンプします。

までループから抜ける

バッシュまで loopは、3つの基本的なループ構造の1つです。 breakを追加します プログラムフローを制御し、別の条件下でループを終了するステートメント。

以下はサンプルプログラムです:

#!/bin/bash

i=0

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

echo "Done!"

まで ループに終了条件が含まれています( $ i -gt 10 )、ループ本体に別の条件が含まれています( $ i -eq 2 )。 2番目の条件は最初の条件の前に発生するため、プログラムは ifに入ります。 ステートメントの本文。ループを終了するためのBashbreakステートメントが含まれています。

スクリプトを実行すると、変数 iのときにプログラムが終了することがわかります。 2に到達します

選択したループ内でブレークを使用する

選択 コマンドはメニューを作成し、プライマリループ構造の1つではありませんが、無限ループのように動作します。 selectを終了するには エレガントなステートメントで、プログラムが終了するケースを作成し、 breakを使用します ループを離れます。

以下のコードは、 selectを使用したテキストによる数字推測ゲームを示しています。 ステートメント:

#!/bin/bash/

PS3="Guess my favorite number: "

select i in {1..10}
do
        echo "Selected number: $i"
        if [[ $REPLY -eq 2 ]]
        then
                echo "Correct! $i is my favorite. Thanks for playing!"
                break
        fi
        echo "Not my favorite. Try again!"
done

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

  • 3行目 指示メッセージを表示します。 選択 ステートメントは、すべてのオプションをリストした後、およびそれぞれの誤った推測の後に、このメッセージを出力します。
  • 5行目 selectを開始します ステートメントであり、オプションを数値として定義します 1 10
  • 8行目 選択した数が2に等しいかどうかを確認します 、これは正しい推測です。チェックに合格すると、Bash breakステートメントはループを終了し、ゲームを終了するのに役立ちます。

スクリプトを実行して、数字を推測するゲームをプレイします。

結果を確認するには、さまざまな値を入力してください。

スクリプトをさらに開発するには、 elifを追加してみてください 範囲外の入力をチェックするステートメント、またはさまざまな入力状況を検討するためのcaseステートメントに変更するステートメント。


Linux
  1. BashスクリプトからTmuxセッションに参加しているかどうかを確認するにはどうすればよいですか?

  2. bashで非常に長い文字列リテラルを分割するにはどうすればよいですか?

  3. Bashの配列から一意の値を取得するにはどうすればよいですか?

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

  2. Bash:コマンド終了ステータスが 0 になるまでループする

  3. コンソールで vim -y を終了するには?

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

  2. bashでリストから要素を取得する方法は?

  3. bashからネットマスクを取得するには?