For ループは、あらゆるプログラミング言語に不可欠な部分です。これにより、プログラムは特定の数の項目を反復処理できます。
たとえば、「n」個の項目のリストまたは配列を調べたい場合は、for ループを使用します。簡単な例を見てみましょう。
1 | バイオレット |
2 | インジゴ |
3 | 青 |
4 | 緑 |
アクションを実行するか、上の表の項目を反復するには、For ループが必要です。
Bash For ループ
bash スクリプトの For ループ構文は次のとおりです。
#!/bin/bash
for VAR in 1 2 3 4 5.....N
do
ACTION 1
ACTION 2
.....
done
Bash For Loop は非常に簡単です。最初の行
#!/bin/bash
コードが bash スクリプトであることを示します。 VAR は、ループに使用される一時変数を表します。 N は最大反復回数を示します。 「do」と「done」はそれぞれループを開始および停止します。アクションは、ループ内で実行されるコマンドです。
リスト、文字列、整数、配列などのさまざまな変数を使用して Bash For Loop を実行できます。この記事では、Bash For ループの一般的な例をいくつか示します。
これらのプログラムは bash コマンド ラインで直接実行することも、ファイルに保存して Bash filename.sh コマンドを使用してファイルを実行することもできます。

静的リストの読み取り
次のリストを考えてみましょう –
rainbowColorList = Violet, Indigo, Blue, Green, Yellow, Orange, Red
次のように Bash For ループを使用して上記の文字列リストを出力できます。
#! /bin/sh
# Define the list
rainbowColorList=Violet,Indigo,Blue,Green,Yellow,Orange,Red
# Comma separator pattern using //,/
for colors in ${rainbowColorList//,/ }
do
echo $colors
done
出力は新しい行の項目リストになります。
#Output
Violet
Indigo
Blue
Green
Yellow
Orange
Red

配列の読み取り
配列を宣言するための構文が異なります。各要素 (文字列) にはかっこを使用します。
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")
for colors in "${rainbowArray[@]}"; do
echo "I like $colors"
done
「@」は、配列内の各要素を反復処理するために使用されます。
#Output
I like Violet
I like Indigo
I like Blue
I like Green
I like Yellow
I like Orange
I like Red
For ループを使用してインデックスと配列要素を出力することもできます。
#Printing with index
rainbowArray=("Violet" "Indigo" "Blue" "Green" "Yellow" "Orange" "Red")
for i in "${!rainbowArray[@]}";
do
echo "Color at index " $i " : " "${rainbowArray[$i]}"
i=$((i+1));
done
#Output
Color at index 0 : Violet
Color at index 1 : Indigo
Color at index 2 : Blue
Color at index 3 : Green
Color at index 4 : Yellow
Color at index 5 : Orange
Color at index 6 : Red
「!」を使用することに注意してください。ループ内で要素インデックスを取得します。

数値範囲の反復
Bash For Loop を使用して、数値範囲を反復処理できます。
#iterating over range of numbers
echo "Countdown begins..."
for N in {10..0}
do
echo "$N"
done
「..」は数値の範囲を示します。
#Output
10
9
8
7
6
5
4
3
2
1
0
範囲を指定してカウント数をスキップすることもできます。
以下の例では、3 ずつカウントをスキップしています。
#iterating with skip counting
echo "Countdown begins..."
for N in {30..0..3}
do
echo "$N"
done
上記のプログラムは、最初の数値として 30 から始まり、0 までカウントダウンします。 for ループの最後のパラメーター ‘3’ は、スキップ カウント数を指定します。
#Output
30
27
24
21
18
15
12
9
6
3
0

文字列と文字
Bash For Loop を使用すると、多くの興味深い文字列操作を実行できます。
たとえば、For ループで ‘seq’ 演算子を使用すると、文字列の各文字を読み取ることができます。
#read characters of a string
myword="welcome"
for i in $(seq 1 ${#myword})
do
echo "${myword:i-1:1}"
done
最初の文字を最初に取得するには、「seq」は 1 で始まる必要があることに注意してください。
#Output
W
e
l
c
o
m
e
文字列をスペースで区切って 1 つずつ出力することもできます。
#read each word from a sentence
mysentence="Welcome to GeekFlare. One stop hub for all techies"
for word in $mysentence; do
echo $word
done
#Output
Welcome
to
GeekFlare.
One
stop
hub
for
all
techies

式
Java などの他のプログラミング言語と同様に、Bash For ループ内に式を配置できます。
for (( var=10; var>=0; var-- ))
do
echo "Counting down...$var"
done
#Output
Counting down...10
Counting down...9
Counting down...8
Counting down...7
Counting down...6
Counting down...5
Counting down...4
Counting down...3
Counting down...2
Counting down...1
Counting down...0
コマンドライン引数の読み取り
コマンドライン引数から読み取るには、「read」コマンドを使用します。以下の例では、ユーザーからいくつかの数値を取得し、Bash For ループを使用して合計を出力します。変数 total を使用して、数値の中間および最終の合計または合計を保存します。
read -a array -p "Enter the numbers you want to add:"
total=0
for i in ${array[@]}; do
let total+=$i
done
echo "Sum of the numbers is: $total"
出力は次のとおりです。
#Output
Enter the numbers you want to add: 3 4 66
Sum of the numbers is: 73
奇数と偶数を見つける
1 から 10 までの奇数と偶数 (または任意の数値 N) を見つけるには、Bash for Loop とともに if 条件を使用する必要があります。偶数を決定するには、数値を 2 で割って、余りが 0 の場合は偶数、それ以外の場合は奇数として分類します。
#declare the list where the even and odd numbers will be sorted and kept
evennum=""
oddnum=""
for (( i=1; i<=10; i++ ))
do
remainder=$(( $i % 2 ))
if [ $remainder -eq 0 ]; then
evennum="$evennum $i "
else
oddnum="$oddnum $i "
fi
done
echo "Even numbers are: "$evennum
echo "Odd numbers are: "$oddnum
上の例では範囲を 10 として指定していることに注意してください。この数値を変更して、任意の範囲内の偶数と奇数を取得できます。前のセクションで学習した「read」コマンドを使用して、ユーザーから番号を読み取ってみることもできます。
#Output
Even numbers are: 2 4 6 8 10
Odd numbers are: 1 3 5 7 9
無限 ループ
無限ループまたは無限ループは実行が停止しないループであり、Ctrl+C を使用してプログラムを強制的に停止する必要があります。 ‘; を使用すると、無限ループを簡単に作成できます。 ;’ for ループ内の演算子:
for (( ; ; ))
do
echo "Welcome to "
done
#Output
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
Welcome to
^C
$
ブレークステートメント
Break ステートメントは、「if」条件が満たされた場合にループを終了するために使用されます。
for color in Violet Indigo Blue Green Yellow Orange Red
do
if [[ "$color" == 'Green' ]]; then
break
fi
echo "Searching for Green, the color now is $color"
done
echo "I found my color $color"
この例では、緑色を見つけようとしています。 For ループは各色をループし、緑色が見つかると、break ステートメントによりプログラムがループから抜け出します。
#Output
Searching for Green, the color now is Violet
Searching for Green, the color now is Indigo
Searching for Green, the color now is Blue
I found my color Green
ステートメントを継続する
Continue は、現在のループをスキップし、特定の条件に基づいて次のループに移動するために使用されます。たとえば、前のプログラムの「緑」という色を印刷したくない場合は、 continue を入力すると、緑を除く他のすべての色が表示されます。
for color in Violet Indigo Blue Green Yellow Orange Red
do
if [[ "$color" == 'Green' ]]; then
continue
fi
echo "$color"
done
#Output
Violet
Indigo
Blue
Yellow
Orange
Red
最後の言葉
文字列、整数、配列、リストを使用した Bash For ループの最も一般的な使用法について説明しました。 Linux を学習していて Windows 10 マシンを持っている場合は、WSL 機能を使用して Windows マシンに Linux をインストールできます。
これで、CMD と同様の方法で Linux ターミナルを使用できるようになります。
次に、Python を使用して bash スクリプトを実行する方法を確認できます。