アンドロイド

Bash whileループ

cURL - The only HTTP client you'll ever need | Practical Bash & Terminal #9

cURL - The only HTTP client you'll ever need | Practical Bash & Terminal #9

目次:

Anonim

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

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

このチュートリアルでは、Bashのwhileループの基本と、ループのフローを変更するbreakおよびcontinueステートメントについて説明します。

Bash whileループ

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

Bash whileループの形式は次のとおりです。

while do done

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

次の例では、各反復でループは変数 i 現在の値を出力し、変数を1ずつ増やします。

i=0 while do echo Number: $i ((i++)) done

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

Number: 0 Number: 1 Number: 2

無限のwhileループ

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

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

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

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

同等の単一行を次に示します。

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

行ごとにファイルを読む

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

次の例では、whileループが /etc/passwd ファイルを1行ずつ読み取り、各行を出力します。

file=/etc/passwd while read -r line; do echo $line done < "$file"

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

ファイルを1行 -r read は、常に -r オプションを指定して read を使用し、バックスラッシュがエスケープ文字として機能しないようにします。

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

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

ステートメントを中断して続行

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

ブレイクステートメント

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

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

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

声明を続ける

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

以下では、現在の反復項目が 2 等しくなると、continueステートメントによって実行がループの先頭に戻り、次の反復が続行されます。

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

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

結論

ここまでで、bash whileループの使用方法を十分に理解できたはずです。

バッシュループターミナル