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

実用的な例を使用したBashForLoop

すべてのコンピュータープログラミング言語の重要な機能の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システムのさまざまなタスクを自動化するプログラムを作成します。この記事が役に立った場合は、お友達とリンクを共有してください。


Linux
  1. BashForループガイドと例

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

  3. Linux シェル スクリプト用の 12 の Bash for ループの例

  1. 例を含む Bash If-Else ステートメント

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

  3. Bash for ループの例

  1. 例を使用してBashスクリプトを作成する方法

  2. 例を使用したBashヒアドキュメントチュートリアル

  3. 実際の例を含む Bash シェルの終了ステータスのチュートリアル