Bash で for ループを実装する
-
Bash
for
ループ -
BashC スタイル
for
ループ構文 -
Bash
Foreach
/For-in
スタイル構文 -
Bash
for
ループでの範囲とジャンプサイズの定義 -
Bash プロンプトで
for
ループを作成し、セミコロンを区切ることで問題に対処する;
このチュートリアルでは、Bash の for
ループを作成するために利用できる Bash スクリプトの定式化について説明します。
まず、その基本的な構文と概念を学習します。後で、C スタイルの for
ループ表記や foreach
または for-in
スタイルなど、Bash スクリプトでさまざまなタイプを学習します。
最後に、セミコロンの問題について説明します ;
bash プロンプトで for
ループを作成している間。
Bash for
ループ
プログラミング言語またはスクリプト言語のループは、特定の基準が満たされないまで、ステートメントまたはステートメントのセットを繰り返し実行するために使用される反復制御構造です。
for
ループは、特定のステートメントまたはコマンドのセットを指定された回数実行する必要がある場合に特に使用されるループ構造です。bash プロンプトと Bash スクリプトで for
ループを使用することもできます。
Bash スクリプトは、for
ループを作成するための 2つの構文を提供します。最初のものは C スタイルまたは 3 式ループとして知られており、for
ループの C 言語の定式化とほぼ同じです。
2 番目の定式化は、有名な foreach
または for-in
スタイルの構成であり、PHP、Python、C#、C++ 11、Ruby などの多くの一般的なプログラミング言語でも採用されています。
BashC スタイル for
ループ構文
このスタイルでは、C 言語のような 3つの式を使用して、ループの反復回数を指定します。
for (( initialization; condition; increment/decrement ))
do
Shell command[s]
done
例:ユーザーが指定した数値のテーブルを出力するのに役立つスクリプトを作成するとします。次のコードを使用してそれを行うことができます。
#!/bin/bash
echo "Enter a Number: "
read number
for ((j=1;j<=10;j++))
do
echo "$number X $j = $((number*j))"
done
上記のコードは、ユーザーから数値を取得し、そのテーブルを最大 10 まで出力します。ユーザーが数値として 5
を入力したとすると、プログラムの出力は次のようになります。
Enter a Number:
5
5 X 1 = 5
5 X 2 = 10
5 X 3 = 15
5 X 4 = 20
5 X 5 = 25
5 X 6 = 30
5 X 7 = 35
5 X 8 = 40
5 X 9 = 45
5 X 10 = 50
Bash Foreach
/For-in
スタイル構文
このタイプの for
ループは、値/要素のリストを予期し、リスト内の要素ごとに 1 回の反復を実行します。リストは、各項目を 1つのスペースで区切ることで提供できます。または、範囲を指定することもできます。
for Counter in 1 2 3 4 5 .. N
do
1st statement
2nd statement
nth statement
done
例:Hello World
を 5 回出力します。
#!/bin/bash
for c in 1 2 4 5 6
do
echo "$c Hello World"
done
出力:
1 Hello World
2 Hello World
4 Hello World
5 Hello World
6 Hello World
欠落している 3
に注意してください。ループはリストに指定されたアイテムの数だけ繰り返されるため、この数は失われます。したがって、変数 c
には最初に値 1
が割り当てられ、1 回の反復が実行されます。
その後、2
が c
に割り当てられ、2 回目の反復が実行されます。後で、リストのすぐ次の値(つまり、4
)が c
に割り当てられ、リスト全体が終了するまでプロセスが続行されます。
for Item in File_0 File_1 File_N
do
Some Operations on Item
done
また
for Item in $(Command)
do
Some Operations on Item
done
for
ループでコマンドを使用すると、Item
変数に各出力トークンが 1つずつ割り当てられます。たとえば、次のスクリプトは、for
ループを使用して、現在のディレクトリの f
で始まるすべてのファイルまたはフォルダを出力します。
#!/bin/bash
for Item in $(ls f*)
do
echo "$Item"
done
Bash for
ループでの範囲とジャンプサイズの定義
一部の開始値と終了値の間に欠落している数値がないことがわかっている場合。ジャンプサイズとも呼ばれる 2つの連続する値の差が 1 より大きい場合でも、次の構文で for
ループを使用できます。
for i in {Start_Value..End_Value..Jump_Size}
do
Statement(s)
done
例:10 から 20 までのすべての偶数を出力するには、Start_Value=10
、End_Value=20
、および Jump_Size=2
が必要です。
#!/bin/bash
for evenNumber in {10..20..2}
do
echo "$evenNumber"
done
出力:
10
12
14
16
18
20
Bash プロンプトで for
ループを作成し、セミコロンを区切ることで問題に対処する ;
;
1 行でコマンドを区切るか終了するために使用されます。&
などの他の区切り文字もあります。
ただし、;
コマンドを終了するために使用されます。次のコマンドは、前のコマンドが完全に実行された後にのみ実行されます。これは同期実行とも呼ばれます。
ステートメントターミネータとして newline
を使用せずに、bash プロンプトの 1 行に for
ループを記述したい場合は、Bash リファレンスマニュアルから抜粋した次の構文を使用できます。
for Item [ [in [List of Items] ] ; ] do commands; done
例:次のコードは、偶数を出力するための以前のスクリプトと同等です。
#!/bin/bash
for even in {10..20..2} ; do echo "$even";done
do
キーワードの直後にあることに注意してください。したがって、;
を追加します do
の後に構文エラーが生成されます。3 式または C タイプの for
ループの構文は次のとおりです。
for (( Initilization ; Condition ; Increment/Decrement )) ; do commands ; done
例:
#!/bin/bash
for ((i=10;i<20;i=i+2));do echo "$i"; done
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn