Powershellの繰り返し処理(ForEach、Do While、Do Untilなど)について説明します。
ForEach構文
ForEach構文は、配列やコレクションの要素を順に処理します。
ForEach構文は、配列またはコレクションの要素の数だけ、ループ(処理の繰り返し)を行い、、ループするごとに要素を取り出し、要素がなくなるとループが終了します。ループの終了条件を記述する必要はありません。
ForEach構文
ForEach(変数 in 配列、またはコレクション) { ループ時の処理 }
配列やコレクションの各要素が変数に代入され、、 ステートメントブロック内で参照できます。
使用例
$ar = "a", "b", "c" foreach ($item in $ar) { Write-Host $item } # 実行結果 a b c
For構文
For構文では、ループする回数(条件)を指定してループごとの処理を実行できます。
ForEach構文はループする回数を指定しませんが、ループする回数を指定したい場合はFor構文を使用します。
For構文
for (カウンター変数=初期値; ループ終了条件式; カウンター増減式) { ループ時の処理 }
「カウンター変数=初期値」は最初の1回だけ実行され、 ループカウンタ変数を初期化します。
「ループ終了条件式」はループを繰り返す条件で、 条件式がTrueの間は処理を繰り返し、 Falseになるとループを終了します。
「カウンター増減式」はループカウンタの増減値を決める式です。例えば、ループカウンター変数の後ろに++を記述すると、変数の値を1ずつ増やします。
使用例
$ar = "a", "b", "c" for ($i = 0; $i -lt $ar.Count; $i++) { Write-Host $ar[$i] } # 実行結果 a b c
While構文
指定された条件が真(True)の間、繰り返して処理を行います。条件が偽(False)になると、繰り返し処理を抜けます。
While構文で指定した条件が真のまま変わらない場合、無限ループになるので、注意が必要です。
While構文では、ループに入るときに条件を評価します。そのため、条件が最初から偽(False)の場合は、1度も繰り返し処理を行いません。
While構文
while (条件式) { 繰り返し処理 }
使用例
$i = 0 while ($i -ne 3) { Write-Host $i $i++ } # 実行結果 0 1 2
Do While、Do Until構文
Do While構文とDo Until構文は、繰り返し処理を実行してから条件を評価します。
そのため、少なくても1回はループ内の処理を実行します。
Do While構文は、条件が真(True)の間、ループを処理を繰り返します。
Do Until構文は、条件が偽(False)の間ループ処理を繰り返します。
Do While構文
do { 繰り返し処理 } while (条件式)
使用例
$i = 0 do { Write-Host $i $i++ } while ($i -ne 3) # 実行結果 0 1 2
Do Until構文
do { 繰り返し理 } until (条件式)
使用例
$i = 0 do { Write-Host $i $i++ } until ($i -eq 3) # 実行結果 0 1 2
まとめ
今回はPowerShellの繰り返し処理ついて説明しました。