logo

Bash For ループ

このトピックでは、の使用法を理解します。 for ループ Bash スクリプトで。

他のプログラミング言語と同様に、bash シェル スクリプトは、反復的なタスクを実行するための「for ループ」もサポートしています。これは、文字列内の一連の単語または配列内の要素に対して特定のステートメントのセットを反復するのに役立ちます。たとえば、UNIX コマンド (またはタスク) を何度も実行することも、「for ループ」を使用してコマンドのリストを読み取って処理することもできます。

For ループの構文

bash スクリプトに「for ループ」を適用するには 2 つの方法があります。 1 つの方法は「for-in」で、もう 1 つの方法は C スタイルの構文です。以下は、bash シェル スクリプトの「for ループ」の構文です。

 for variable in list do commands done 

または

 for (( expression1; expression2; expression3 )) do commands done 

「for ループ」ステートメントにはいくつかの重要なポイントがあります。

  • bash の「for ループ」の各ブロックは、「do」キーワードで始まり、その後にブロック内のコマンドが続きます。 「for ループ」ステートメントは「done」キーワードで閉じられます。
  • 「for ループ」が反復される回数は、宣言されたリスト変数によって異なります。
  • ループはリストから 1 つの項目を選択し、ループ内で使用される変数に値を割り当てます。
  • 「do」と「done」の間でコマンドを実行した後、ループは先頭に戻り、リストから次の項目を選択し、プロセス全体を繰り返します。
  • リストには、スペースで区切られた数字や文字列などを含めることができます。

「for ループ」の例の一部を以下に示し、それらがどのように機能するかを示します。

基本的な「For ループ」の例

Bash スクリプト

 #!/bin/bash #This is the basic example of 'for loop'. learn='Start learning from Javatpoint.' for learn in $learn do echo $learn done echo 'Thank You.' 

出力

Bash For ループ

範囲を読み取るための For ループ

Bash スクリプト

 #!/bin/bash #This is the basic example to print a series of numbers from 1 to 10. for num in {1..10} do echo $num done echo 'Series of numbers from 1 to 10.' 

出力

Bash For ループ

インクリメント/デクリメントで範囲を読み取るための For ループ

別の 2 つのドット (..) と段階的に値を追加することで、指定した値を増減できます (例: {START..END..INCREMENT})。以下の例を確認してください。

インクリメント用

 #!/bin/bash #For Loop to Read a Range with Increment for num in {1..10..1} do echo $num done 

出力

Bash For ループ

減少の場合

 #!/bin/bash #For Loop to Read a Range with Decrement for num in {10..0..1} do echo $num done 

出力

Bash For ループ

配列変数を読み取るための For ループ

「for ループ」を使用して配列の値を反復できます。

スレッド.デストロイ

構文は次のように定義できます。

 array=( 'element1' 'element 2' . . 'elementN' ) for i in '${arr[@]}' do echo $i done 

出力

「array」内の各要素に対して、「do」から「done」までのステートメントまたはコマンドのセットが実行されます。各要素は、それぞれの反復のループ内で「i」としてアクセスできます。 「for ループ」を使用して配列の要素を反復処理する方法を説明する以下の例を確認してください。

Bash スクリプト

 #!/bin/bash #Array Declaration arr=( 'Welcome''to''Javatpoint' ) for i in '${arr[@]}' do echo $i done 

出力

Bash For ループ

For ループで文字列内の空白を単語の区切り文字として読み取る

構文は次のように定義できます。

 #!/bin/bash for word in $str; do done 

ここ、 str 文字列を指します。

「do」から「done」までのステートメントは、文字列の「単語」ごとに実行されます。以下の例を確認してください。

Bash スクリプト

 #!/bin/bash #For Loop to Read white spaces in String as word separators str='Let's start learning from Javatpoint.' for i in $str; do echo '$i' done 

出力

Bash For ループ

文字列の各行を単語として読み取る For ループ

構文は次のように定義できます。

 #!/bin/bash for word in '$str'; do done 

ここでは、「do」から「done」までのステートメントが文字列の「行」ごとに実行されます。以下の例を確認してください。

Bash スクリプト

 #!/bin/bash #For Loop to Read each line in String as a word str='Let's start learning from Javatpoint.' for i in '$str'; do echo '$i' done 

出力

Bash For ループ

注: 「文字列内の空白を単語区切り文字として読み取る For ループ」と「文字列内の各行を単語として読み取る For ループ」の唯一の違いは、文字列変数を囲む二重引用符です。

3 つの式を読み取る For ループ

3 つの式の構文は、「for ループ」の最も一般的な構文です。最初の式は初期化のプロセスを示し、2 番目の式は終了を示し、3 番目の式は増分または減分を示します。

for ループで 3 つの式を使用して 1 から 10 までの数値を出力する以下の例を確認してください。

Bash スクリプト

 #!/bin/bash #For Loop to Read Three-expression for ((i=1; i<=10; i++)) do echo '$i' done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-8.webp" alt="Bash For Loop"> <h3>For Loop with a Break Statement</h3> <p>A &apos;break&apos; statement can be used inside &apos;for&apos; loop to terminate from the loop.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Table of 2 for table in {2..100..2} do echo $table if [ $table == 20 ]; then break fi done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-9.webp" alt="Bash For Loop"> <h3>For Loop with a Continue Statement</h3> <p>We can use the &apos;continue&apos; statement inside the &apos;for&apos; loop to skip any specific statement on a particular condition. It tells Bash to stop executing that particular iteration of the loop and process the next iteration.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement&apos; for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no &apos;start, condition, and increment&apos; in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo &apos;Current Number: $((i++))&apos; done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;></pre></=10;>

出力

Bash For ループ

Continue ステートメントを含む For ループ

「for」ループ内で「Continue」ステートメントを使用すると、特定の条件で特定のステートメントをスキップできます。これは、ループの特定の反復の実行を停止し、次の反復を処理するように Bash に指示します。

Bash スクリプト

 #!/bin/bash #Numbers from 1 to 20, ignoring from 6 to 15 using continue statement&apos; for ((i=1; i<=20; 5 16 i++)); do if [[ $i -gt && -lt ]]; then continue fi echo done < pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-10.webp" alt="Bash For Loop"> <h3>Infinite Bash For Loop</h3> <p>When there is no &apos;start, condition, and increment&apos; in the bash three expressions for loop, it becomes an infinite loop. To terminate the infinite loop in Bash, we can press Ctrl+C.</p> <p> <strong>Bash Script</strong> </p> <pre> #!/bin/bash i=1; for (( ; ; )) do sleep 1s echo &apos;Current Number: $((i++))&apos; done </pre> <p> <strong>Output</strong> </p> <img src="//techcodeview.com/img/bash-tutorial/09/bash-loop-11.webp" alt="Bash For Loop"> <h2>Conclusion</h2> <p>In this topic, we discussed how to use for loop statement in Bash to perform specific tasks</p> <hr></=20;>

出力

unix ディレクトリを作成する
Bash For ループ

結論

このトピックでは、Bash で for ループ ステートメントを使用して特定のタスクを実行する方法について説明しました。