シェルスクリプトでBASH "for"ループを使用する方法
BASH(Bourne Again Shellの略)は、ほとんどのLinuxおよびUNIXベースのオペレーティングシステムで使用されているスクリプト言語です。
ターミナルウィンドウ内でBASHコマンドを順番に実行することも、コマンドをテキストファイルに追加してシェルスクリプトを作成することもできます。
シェルスクリプトを書いてみることの大事な点は、シェルスクリプトを何度も何度も実行できることです。 たとえば、ユーザをシステムに追加し、権限を設定し、開始環境を管理する必要があるとします。 コマンドを紙に書き留めて、新しいユーザーを追加するときにコマンドを実行することも、1つのスクリプトを作成してそのスクリプトにパラメータを渡すこともできます。
BASHなどのスクリプト言語は、他の言語と同様のプログラミング構造を持っています。 たとえば、インポートパラメータを使用してキーボードから入力を取得し、変数として格納することができます。 次に、入力パラメータの値に基づいて特定のアクションを実行するスクリプトを取得できます 。
プログラミングやスクリプト言語の重要な部分は、同じコードを何度も何度も実行できることです。
コードを繰り返すにはいくつかの方法があります(ループとも呼ばれます)。 このガイドでは、 "for"ループを記述する方法を示します。
forループは、コードの特定のセクションを何度も何度も繰り返します。 特定の条件が満たされるまで一連のコマンドを実行し続けることができ、その後は停止します。
このガイドでは、BASHスクリプト内でforループを使用する5つの方法を示します。
はじめに
forループの例を開始する前に、ターミナルウィンドウを開いて次の手順を実行する必要があります。
- mkdirスクリプトを入力してください( ここでmkdirについて学んでください )
- cd scriptsを入力します (これにより、ディレクトリがスクリプトに 変更されます )
- nano examplen.shを入力します (ここでnは作業中の例です)。
- スクリプトを入力してください
- CTRL + Oを押して保存し、 CTRL + Xを押して終了します
- bash examplen.shを実行します(もう一度、 nは使用しているサンプルです)
リストをループする方法
#!/ bin / bash
1 2 3 4 5の数字の場合
行う
エコー$番号
完了
出口0
"for"ループを使用するBASHの方法は、他のほとんどのプログラミング言語やスクリプト言語が "for"ループを処理する方法とは多少異なります。 スクリプトを打ち破ろう...
BASH "for"ループallでは、 doとdoneの間のステートメントは、リスト内のすべての項目に対して1回実行されます。
上の例では、リストは単語の後に来るすべてのものです(つまり、1 2 3 4 5)。
ループが反復するたびに、リストの次の値が単語"for"の後に指定された変数に挿入されます。 上記のループでは、変数はnumberと呼ばれます 。
echoステートメントは、情報を画面に表示するために使用されます。
したがって、この例では、1から5までの数字をとり、それらを1つずつ画面に出力します。
- 1
- 2
- 3
- 4
- 5
開始点と終了点をループする方法
上記の例の問題は、より大きなリスト(1から500など)を処理したい場合は、最初にすべての数値を入力するには年数がかかることです。
これにより、開始点と終了点を指定する方法を示す2番目の例が得られます。
#!/ bin / bash
{1..10}の数字の場合
行う
echo "$ number"
完了
出口0
ルールは基本的に同じです。 単語 " in"の後の値が反復処理のリストを構成し、リストの各値は変数(つまり数値)に格納され、ループが反復するたびにdoとdoneの間の文が実行されます。
主な違いは、リストの形成方法です。 中括弧{}は基本的に範囲を表し、この場合の範囲は1〜10です(2つの点で範囲の開始と終了を区切ります)。
したがって、この例では、1から10までの各番号を実行し、次のように番号を画面に出力します。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
最初の例と同じ構文を使って、同じループを以下のように書くことができました:
1 2 3 4 5 6 7 8 9 10
範囲内の数値をスキップする方法
前の例では、開始点と終了点をループする方法を示しました。次に、範囲内の数値をスキップする方法を見ていきます。
0から100の間でループしたいが、10番目の数字だけを表示したいとします。 次のスクリプトはそれを行う方法を示しています:
#!/ bin / bash
number for {0..100..10}
行う
echo "$ number"
完了
出口0
ルールは基本的に同じです。 doとdoneの間に実行されるリスト、変数、および一連のステートメントがあります 。 今回のリストは、{0..100..10}のようになります。
最初の数字は0、最後の数字は100です。3番目の数字(10)は、スキップするリスト内のアイテムの数です。
したがって、上記の例では、次の出力が表示されます。
- 0
- 10
- 20
- 30
- 40
- 50
- 60
- 70
- 80
- 90
- 100
より伝統的なループを探す
ループのためのBASHの書き方は、他のプログラミング言語と比べると少し奇妙です。
しかし、次のように、Cプログラミング言語に似たスタイルのforループを書くことができます:
#!/ bin / bash
for((number = 1; number <100; number ++))
{
if(($ number%5 == 0))
次に
echo "$ numberは5で割り切れる"
fi
}
出口0
ループは、変数番号を1 (数値= 1 )に設定することによって開始されます。 ループの繰り返しは、数値の値が100未満( 数値<100 )の間繰り返されます。 numberの値は、各反復の後に1を加えることによって変わります( 数++ )。
中括弧の間のすべては、ループの繰り返しごとに実行されます。
中かっこの間のビットは、数値の値をチェックし、5で割り、余りを0と比較します。余りが0の場合、数値は5で割り切れ、画面に表示されます。
例えば:
- 5は5で割り切れる
- 10は5で割り切れる
- 15は5で割り切れる
反復のステップサイズを変更したい場合は、++セクションをnumber = number + 2 、 number = number + 5 、またはnumber = number + 10などに修正することができます。
これをnumber + = 2またはnumber + = 5にさらに減らすことができます。
実際的な例
forループは繰り返し回数を超える数のリストを処理できます。 他のコマンドの出力を実際にリストとして使うことができます。
次の例は、オーディオファイルをMP3からWAVに変換する方法を示しています 。
#!/ bin / bash
この例のリストは、現在のフォルダー内の.MP3拡張子を持つすべてのファイルであり、変数はファイルです 。
mpgコマンドはMP3ファイルをWAVに変換します。 ただし、まずパッケージマネージャーを使用してインストールする必要があります。