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

Bash while Loop

ループはプログラミング言語の基本的な概念の1つです。ループは、特定の条件が満たされるまで一連のコマンドを何度も実行する場合に便利です。

Bashなどのスクリプト言語では、ループは反復的なタスクを自動化するのに役立ちます。 Bashスクリプトには、 forという3つの基本的なループ構造があります。 ループ、 while ループし、 until ループ。

このチュートリアルでは、 whileの基本について説明します。 Bashでループします。 breakの使用方法も紹介します および続行 ループの流れを変更するステートメント。

バッシュwhile ループ#

while ループは、指定された条件がtrueと評価される限り、指定されたコマンドのセットを不明な回数実行するために使用されます。

バッシュwhile ループは次の形式を取ります:

while [CONDITION]
do
  [COMMANDS]
done

while ステートメントはwhileで始まります キーワードの後に​​条件式が続きます。

コマンドを実行する前に、条件が評価されます。条件がtrueと評価されると、コマンドが実行されます。それ以外の場合、条件がfalseと評価された場合、ループは終了し、プログラム制御は次のコマンドに渡されます。

以下の例では、各反復で、変数 iの現在の値 印刷され、1つインクリメントされます。

i=0

while [ $i -le 2 ]
do
  echo Number: $i
  ((i++))
done

火ループはiである限り繰り返されます 2以下です。次の出力が生成されます:

Number: 0
Number: 1
Number: 2
無限のwhile ループ#

無限ループは、無限に繰り返され、決して終了しないループです。条件が常にtrueと評価される場合、無限ループが発生します。

次の例では、組み込みコマンドを使用しています。 無限ループを作成します。 常にtrueを返します。 trueを使用することもできます 組み込みまたは常にtrueを返すその他のステートメント。

while :
do
  echo "Press <CTRL+C> to exit."
  sleep 1
done

while 上記のループは無期限に実行されます。 CTRL + C を押すと、ループを終了できます。 。

これは1行に相当するものです:

while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done
ファイルを1行ずつ読み取る#

whileの最も一般的な使用法の1つ ループは、ファイル、データストリーム、または変数を1行ずつ読み取ることです。

/ etc / passwdを読み取る例を次に示します。 1行ずつファイルし、各行を印刷します:

file=/etc/passwd

while read -r line; do
  echo $line
done < "$file"

whileを制御する代わりに 条件付きのループ、入力リダイレクトを使用しています( <"$ file" )ファイルを readに渡す ループを制御するコマンド。 while 最後の行が読み取られるまでループが実行されます。

ファイルを1行ずつ読み取る場合は、常に readを使用してください -rを使用 バックスラッシュがエスケープ文字として機能しないようにするオプション。

デフォルトでは、 read コマンドは、先頭/末尾の空白文字(スペースとタブ)をトリミングします。 IFS =を使用します readの前のオプション この動作を防ぐには:

file=/etc/passwd

while IFS= read -r line; do
  echo $line
done < "$file"

break および続行 ステートメント#

break および続行 ステートメントを使用して、whileループの実行を制御できます。

break ステートメント#

break ステートメントは現在のループを終了し、終了したループに続くコマンドにプログラム制御を渡します。通常、特定の条件が満たされたときにループを終了するために使用されます。

次の例では、現在の反復アイテムが 2 に等しくなると、ループの実行が中断されます。 。

i=0

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

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

続行 ステートメント#

続行 ステートメントはループの現在の反復を終了し、プログラム制御をループの次の反復に渡します。

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

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!

結論#

while ループは、条件が真である限り、指定されたコマンドのセットを繰り返し実行します。

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


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

  2. Linuxスクリプト:Bashでのwhileループの3つのハウツー

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

  1. SshによりWhileループが停止しますか?

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

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

  1. BashForループガイドと例

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

  3. ループの維持 – Bash For、While、Until ループの例