すべてのコンピュータープログラミング言語の重要な機能の1つは、コードを繰り返し実行できることです。それは多くの時間を節約し、またプログラムのコード行を減らします。 Bashプログラミングにより、ユーザーはループを使用してタスクを何度も実行できます。この記事では、 For Loopについて説明します。 ステートメント。
Forループ ステートメントは、特定の条件がfalseになるまで一連のコマンドを実行するために使用されます。たとえば、これを使用してLinuxコマンドを5回実行したり、特定の条件に達するまでシステム上のファイルを読み取って処理したりできます。
BashForLoopコマンド
Forループ Bashプログラミングでは、2つの異なる構文があります。
- For In Loop
for item in (list) do command_one command_two ... done
上記のForInLoop構文には、for、in、do、doneの4つのキーワードがあります。リストは「リスト」の値を参照します。アイテムは、Bashプログラミング言語ではキーワードではない変数名です。
プログラムを実行すると、「リスト」の項目数に応じてコマンドが実行されます。したがって、リストに5つの数字(1 2 3 4 5)が含まれている場合、コマンドは5回実行されます。
>すべての反復で、リストの値はitem変数に格納され、プログラム本体で使用されます。
- Cプログラミング言語のような構文のForループ
for (( expression_1; expression_2; expression_3)) do command_one command_two ... done
上記のForLoopステートメントを使用すると、C、C ++、またはJava開発者であれば、構文に精通している必要があります。 ‘expression_1は初期化を表し、expression_2は条件を表し、expression_3は更新を表します。
プログラムを実行すると、Forループの変数値を初期化する最初の反復を実行する前に、「expression_1」が評価されます。
プログラム本体は、expression_2がTRUEになるまで実行されます。ここでのプログラム本体は、doキーワードとdoneキーワードの間のコマンドを指します。これで、プログラムを繰り返すたびに、expression_3が評価されます。
それを理解した上で、Linuxシステムを操作する日常のアクティビティで利用できるBashForLoopの例をいくつか見てみましょう。スクリプトを作成し、ターミナルで実行します。すべてのBashスクリプトは「.sh。」拡張子を使用することに注意してください。
Forループを使用して一連の文字列を印刷する
For In Loopを使用して、一連の文字列を印刷できます。以下のコードを見てください。プログラムで使用されている3つのファイルは、作業ディレクトリにすでにあります。つまり、「testFile1」、「testFile2」、および「testFile3」です。
#!/bin/bash for item in testFile1 testFile2 testFile3 do cat $item echo "Done with file $item" echo done
出力は次のとおりです。

上記のプログラムは、リストで指定されたファイルの内容をリストします。つまり、testFile1、testFile2、およびtestFile3です。 「cat」コマンドは、ファイルの内容を表示するために使用されるLinuxユーティリティです。
したがって、プログラムは「testFile1」で始まるファイルをループし、「done with testFilee」というステートメントを出力する前に「cat」コマンドを実行して、次のファイルに繰り返します。
リスト内のすべてのファイルを反復処理した後、プログラムは自動的に終了します。
ファイルをバックアップするための配列要素を含む「ForInLoop」
For In Loopを使用して、配列内の要素を反復処理できます。以下のコードをご覧ください。
#!/bin/bash Files=('testFile1' 'testFile2' 'testFile3') for item in "${Files[@]}"; do cp $item{,.bak} echo "Created a backup of $item" done
出力は以下のようになります。

上記のプログラムは、cpコマンドを使用して、アレイ内のファイルのバックアップを作成します。すべてのファイルを反復処理するときに、データのバックアップを作成し、アレイ内の次のアイテムに移動する前に「バックアップの作成メッセージ」を出力します。
範囲付きの「ForInLoop」
数値の範囲を反復処理できます。たとえば、1から100までの数字を繰り返したいとします。プログラムにこれらすべての数字を書くと、コードがかなり作成されます。範囲を使用してこれを解決できます。以下のコードをご覧ください。
#!/bin/bash for i in {0..50} do echo "COUNT: $i" done
出力は次のようになります。

上記の出力から、プログラムが1〜50の数字を出力していることがわかります。これは、1〜50桁の範囲を指定したためです。
出力を出力する前に特定の桁数をスキップする範囲を作成するとします。次に、範囲構文に3番目のパラメーターを含める必要があります。以下のコードを参照してください。
#!/bin/bash for i in {0..100..10} do echo "COUNT: $i" done
出力は次のようになります。

出力は次のようになります。
上の画像から、プログラムは0〜100の数字を出力しましたが、反復ごとに10桁をスキップしていることがわかります。
Cプログラミング構文を使用した「Forループ」
「ForInLoop」でいくつかの例を見てきたので、他のForLoop構文を見てみましょう。これには、ループを初期化する初期化式、プログラムの実行を決定する条件式、および変数値を更新するインクリメント式が含まれています。
以下のコードをご覧ください。
#!/bin/bash for (( i=5; i>=1; i-- )) do echo "COUNT: $i" done
出力は次のようになります。

Forループを使用して無限ループを作成する
Bashで無限ループを作成するには、Cプログラミング構文を使用します。以下のコードを参照してください。
#!/bin/bash for (( ; ; )) do echo "Use Ctrl+C to terminate the loop." echo "Starting Infinite Loop..." done
出力は次のようになります。

無限ループから抜け出すには、Ctrl+Cを押してプロセスをキャンセルします。
「Forループ」のBreakandContinueステートメント
プログラミングでは、BreakステートメントとContinueステートメントがプログラムの実行を制御します。 Breakステートメントはプログラムを終了し、ループから抜け出します。一方、Continueステートメントは、プログラムの次の反復を強制的に実行します。
-
Breakステートメント
Breakステートメントを使用する以下のプログラムを見てみましょう。
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'kali' ]]; then break fi echo "Linux_distribution: $distro" done
出力は次のようになります。

上の画像から、「Kali」が出力に印刷されていないことがわかります。これは、変数「distro」が保持する値を確認する「IfCondition」を指定したためです。値が「Kali」の場合、「break」ステートメントが実行され、ループが終了しました。
ご覧のとおり、 ArchLinux breakステートメントがプログラムを終了したため、出力に出力されませんでした。
続行ステートメント
Breakステートメントとは異なり、Continueステートメントはその部分でプログラムを終了しますが、プログラムの次の反復を強制的に実行します。
以下のコードをご覧ください。
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'Kali' ]]; then continue fi echo "Linux_distribution: $distro" done
出力は次のようになります。

上の画像から、「Kali」が出力に印刷されていないことがわかります。これは、変数「distro」が保持する値を確認するために「IfCondition」を指定したためです。値が「Kali」の場合、「continue」ステートメントが実行されました。この時点でループを終了しましたが、プログラムの次の部分を強制的に実行しました。
ご覧のとおり、「ArchLinux」が出力されたのに対し、「Kali」は出力に出力されませんでした。 Continueステートメントは、プログラムの次の部分の実行を強制しました。
Forループを使用したより実用的なBashプログラム
「ForLoop」ステートメントを使用していくつかのBashプログラムを見てきたので、Linuxシステムの管理に使用できる実際の例を見てみましょう。
- MP3ファイルをWAVに変換するBashプログラム
このプログラムでは、システムにMPG123ツールがインストールされている必要があります。以下のコードは、拡張子が「.mp3。」のファイルを探し、「mpg123」ツールを使用して「.wav。」ファイルに変換します。
#!/bin/bash for item in ./*.mp3 do mpg123 -w music.wav $item.mp3 done
下の画像から、「Audio.mp3」を「Music.wav」に変換したことがわかります。

- firefox.desktopファイルが存在するかどうかを確認するための「ForLoop」プログラム。
以下のプログラムは、applications /ディレクトリに存在するすべてのファイルを反復処理し、firefox.desktopが存在するかどうかの出力を提供します。
#!/bin/bash for item in /usr/share/applications/* do if [ "${item}" == "/usr/share/applications/firefox.desktop" ] then echo "Firefox.Desktop is present in the applications directory"; fi done

結論
これで、 For Loopの使用方法を学習しました。 Bashプログラミングのステートメントで、Linuxシステムのさまざまなタスクを自動化するプログラムを作成します。この記事が役に立った場合は、お友達とリンクを共有してください。