Bashスクリプティングでは、ループは特定の条件が満たされるまでコードのブロックを繰り返し実行できる制御構造です。ループは反復的なタスクの自動化、データコレクションの処理、反復操作の実行に不可欠です。Bashで使用可能なさまざまな種類のループを理解することは、効率的で効果的なスクリプトを作成するために不可欠です。
for
ループは、Bashでシンプルかつ一般的に使用されるループです。値のリストまたは数値の範囲を反復処理できます。for
ループの構文は次のとおりです。
for variable in list do commands done
variable
: リストまたは範囲を反復処理するために使用される変数。list
: 反復処理する値のリストまたは数値の範囲。commands
: ループの各反復で実行されるコマンド。たとえば、次のfor
ループは、果物のリストを反復処理して各果物を印刷します。
fruits=(apple banana orange) for fruit in "${fruits[@]}" do echo $fruit done
while
ループは、指定された条件が真である限り、コードのブロックを繰り返し実行します。while
ループの構文は次のとおりです。
while condition do commands done
condition
: ループの実行を継続するかどうかを決定する条件。commands
: ループの各反復で実行されるコマンド。たとえば、次のwhile
ループは、1から10までの数字を印刷し続けます。
i=1 while [ $i -le 10 ] do echo $i ((i++)) done
until
ループはwhile
ループに似ていますが、指定された条件が偽になるまでコードのブロックを繰り返し実行します。until
ループの構文は次のとおりです。
until condition do commands done
condition
: ループの実行を継続するかどうかを決定する条件。commands
: ループの各反復で実行されるコマンド。たとえば、次のuntil
ループは、ユーザーが非数値を入力するまで1から10までの数字を印刷し続けます。
read -p "Enter a number: " number until [[ $number =~ ^[0-9]+$ ]] do echo "Invalid input. Please enter a number." read -p "Enter a number: " number done echo "You entered $number."
do-while
ループは、ループ条件を確認する前にコードのブロックを少なくとも1回実行するwhile
ループのバリエーションです。do-while
ループの構文は次のとおりです。
do commands done while condition
commands
: ループの各反復で実行されるコマンド。condition
: ループの実行を継続するかどうかを決定する条件。たとえば、次のdo-while
ループは、ユーザーが非数値を入力した場合でも、1から10までの数字を印刷し続けます。
read -p "Enter a number: " number do echo $number ((number++)) done while [[ $number -le 10 ]]
ネストされたループは、ループ内のループです。これにより、複雑な反復を実行し、複数のレベルを持つデータ構造を処理できます。ネストされたループは、さまざまな種類のループを組み合わせたり、同じ種類のループを複数回使用したりすることで作成できます。
たとえば、次のネストされたfor
ループは、2次元の配列を反復処理して各要素を印刷します。
array=( [0,0]=1 [0,1]=2 [0,2]=3 [1,0]=4 [1,1]=5 [1,2]=6 [2,0]=7 [2,1]=8 [2,2]=9 ) for ((i=0; i<3; i++)) do for ((j=0; j<3; j++)) do echo ${array[$i,$j]} done done
ループ制御ステートメントを使用すると、ループの流れを変更できます。Bashで最も一般的に使用される2つのループ制御ステートメントは、break
とcontinue
です。
break
ステートメントは、ループを途中で終了するために使用されます。break
ステートメントが検出されると、ループはすぐに終了し、実行はループに続くステートメントから続行されます。
たとえば、次のfor
ループは、i
の値が5に達すると、break
ステートメントを使用してループを終了します。
for ((i=0; i<10; i++)) do if [ $i -eq 5 ] then break fi echo $i done
continue
ステートメントは、ループの現在の反復をスキップして次の反復を続行するために使用されます。continue
ステートメントが検出されると、現在の反復の残りのステートメントはスキップされ、ループは次の反復に進みます。
たとえば、次のwhile
ループは、continue
ステートメントを使用して偶数をスキップします。
i=0 while [ $i -lt 10 ] do ((i++)) if [ $((i % 2)) -eq 0 ] then continue fi echo $i done
ループは、反復的なタスクの自動化、データコレクションの処理、反復操作の実行を可能にする、Bashスクリプティングの不可欠な制御構造です。Bashで使用可能なさまざまな種類のループとその効果的な使用方法を理解することは、効率的で効果的なスクリプトを作成するために不可欠です。さらに、ループ制御ステートメントを使用すると、ループの流れを変更できるため、さらに汎用性が高まります。
Bashでループを使用することに習熟するには、さまざまなシナリオで練習して試してみる必要があります。ループを操作するほど、その動作を理解し、現実世界の問題を解決するために適用することができるようになります。
YesNo
返信を残す