Skip to main content

LinuxシェルスクリプトBASH 'for' Loopの例

[デュエルマスターズ]ジャスティスループリペア[ループ紹介] (六月 2025)

[デュエルマスターズ]ジャスティスループリペア[ループ紹介] (六月 2025)
Anonim

BASH(Bourne Again Shellの略)は、ほとんどのLinuxおよびUNIXベースのオペレーティングシステムで使用されているスクリプト言語です。

ターミナルウィンドウ内でBASHコマンドを順番に実行することも、コマンドをテキストファイルに追加してシェルスクリプトを作成することもできます。

シェルスクリプトを書いてみることの大事な点は、シェルスクリプトを何度も何度も実行できることです。たとえば、ユーザをシステムに追加し、権限を設定し、開始環境を管理する必要があるとします。コマンドを紙に書き留めて、新しいユーザーを追加するときにコマンドを実行することも、1つのスクリプトを作成してそのスクリプトにパラメータを渡すこともできます。

BASHなどのスクリプト言語は、他の言語と同様のプログラミング構造を持っています。たとえば、インポートパラメータを使用してキーボードから入力を取得し、変数として格納することができます。次に、入力パラメータの値に基づいて特定のアクションを実行するスクリプトを取得できます。

プログラミングやスクリプト言語の重要な部分は、同じコードを何度も何度も実行できることです。

コードを繰り返すにはいくつかの方法があります(ループとも呼ばれます)。このガイドでは、 "for"ループを記述する方法を示します。

A にとって ループは、コードの特定のセクションを何度も繰り返します。特定の条件が満たされるまで一連のコマンドを実行し続けることができ、その後は停止します。

このガイドでは、BASHスクリプト内でforループを使用する5つの方法を示します。

はじめに

forループの例を開始する前に、ターミナルウィンドウを開いて次の手順を実行する必要があります。

  1. 入る mkdirスクリプト (ここでmkdirについて学んでください)。

  2. 入る cdスクリプト (これにより、ディレクトリが スクリプト ).

  3. 入る nano examplen.sh (どこで n あなたが取り組んでいる例です)。

  4. スクリプトを入力します。

  5. 押す CTRL + O 保存して CTRL + X 出る。

  6. 走る bash examplen.sh (再び、 n あなたが一緒に作業している例です)。

リストをループする方法

#!/ bin / bashfor 1 2 3 4 5doecho $ numberdoneexit 0

"for"ループを使用するBASHの方法は、他のほとんどのプログラミング言語やスクリプト言語が "for"ループを処理する方法とは多少異なります。スクリプトを壊しましょう。

すべてのBASH for "ループでは、 行う そして 完了 リスト内のすべての項目に対して1回実行されます。

上の例では、リストは単語の後に来るすべてのものです に (すなわち、1 2 3 4 5)。

ループが反復するたびに、リストの次の値が単語の後に指定された変数に挿入されます "にとって" 。上記のループでは、変数は 数 .

echoステートメントは、情報を画面に表示するために使用されます。

したがって、この例では、1から5までの数字をとり、それらを1つずつ画面に出力します。

  • 1
  • 2
  • 3
  • 4
  • 5

開始点と終了点をループする方法

上記の例の問題は、より大きなリスト(1から500など)を処理したい場合は、最初にすべての数値を入力するには年数がかかることです。

これにより、開始点と終了点を指定する方法を示す2番目の例が得られます。

#!/ bin / bashfor {1..10}の番号doecho "$ number" doneexit 0

ルールは基本的に同じです。単語 " に" 反復するリストを構成し、リスト内の各値が変数(すなわち番号)に配置され、ループが反復するたびに、 行う そして 完了 が実行される。

主な違いは、リストの形成方法です。中括弧{}は基本的に範囲を表し、この場合の範囲は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 / bashfor {0,00 … 10} doechoの数字 "$ number" doneexit 0

ルールは基本的に同じです。間に実行されるリスト、変数、および一連のステートメントがあります 行う そして 完了 。今回のリストは、{0..100..10}のようになります。

最初の数字は0、最後の数字は100です。3番目の数字(10)は、スキップするリスト内のアイテムの数です。

したがって、上記の例では、次の出力が表示されます。

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

より伝統的なループを探す

ループのためのBASHの書き方は、他のプログラミング言語と比べると少し奇妙です。

しかし、次のように、Cプログラミング言語に似たスタイルのforループを書くことができます:

"$ numberは5で割り切れる" fi} exit 0(if($ number%5 == 0))

ループは、変数番号を1に設定することによって開始します (番号= 1 )。数値の値が100未満の間、ループは反復し続けます ( 数<100 )。の価値 数 各反復の後に1を加えることによって変化する( 番号++ ).

中括弧の間のすべては、ループの繰り返しごとに実行されます。

中括弧の間のビットは、aの値をチェックします。 数 それを5で割り、余りを0と比較します。余りが0の場合は、5で割り切れるので、画面に表示されます。

例えば:

  • 5は5で割り切れる
  • 10は5で割り切れる
  • 15は5で割り切れる

反復のステップサイズを変更したい場合は、番号++セクションを修正することができます 番号=番号+ 2 , 番号=番号+5 、または 番号=番号+10

これは、 数+ = 2 または 番号+ = 5 .

実際的な例

forループは繰り返し回数を超える数のリストを処理できます。他のコマンドの出力を実際にリストとして使うことができます。

次の例は、オーディオファイルをMP3からWAVに変換する方法を示しています。

#!/ bin / bash./*.mp3dompg -w ./wavs/"${file}".wav "$ file"のファイル用

この例のリストは、現在のフォルダ内の.MP3拡張子を持つすべてのファイルで、変数はaです。 ファイル .

ザ mpg コマンドはMP3ファイルをWAVに変換します。ただし、まずパッケージマネージャーを使用してインストールする必要があります。