PowerShell: for文を使ったループ処理
PowerShellでループ処理を行う方法はいくつかりありますが、 その中の1つfor文による繰り返し処理を解説します。
for文はforeach文の次によく使われる繰り返し方法です。 ループカウンタの初期値や増減式を最初に記述するため、 ループ本体にカウンタの増減式を書かなくても良いという メリットがあり、繰り返す回数が決まっている場合に使いやすい 繰り返し方法です。
for (初期化式; 条件式; 増減式) { 繰り返す処理 }
キーワードforの後に()丸括弧で囲んで3つの式 「初期化式、条件式、増減式」があり、 その後に{}波括弧で囲ったスクリプトブロックを書きます。
「初期化式」は最初の1回だけ実行され、
ループを管理する変数(ループカウンタ)を初期化します。
「条件式」はループを繰り返す条件で、
条件式がTrueの間は処理を繰り返し、
Falseになるとループを終了します。
「増減式」はループカウンタの増減値を決める式です。
次のコードは配列$arrの要素数と同じ回数だけループして、 配列$arrの要素内容を表示しています。 ループカウンタ$iを使ってループの回数を管理します。
$arr = "a", "b", "c" for ($i = 0; $i -lt $arr.Count; $i++) { Write-Host $arr[$i] } # 実行結果 a b c
一般的に、ループカウンタに使う変数名は「i」「j」などの アルファベット1文字が使われます。 上のコードでは「i」を使っています。
次は数値を使ったfor文ループの例です。
1から10までの数値を足し算して合計値を出力します。
ループカウンタ$iの初期値を1として、
ループカウンタの数値を利用しながら足し算を行います。
「$sum += $i」は「$sum = $sum + $i」と同じ意味です。
$sum = 0 for ($i = 1; $i -le 10; $i++) { $sum += $i } Write-Host "合計: $sum" # 実行結果 合計: 55
for文を抜け出すbreak文
PowerShellのfor文を途中で抜け出したい場合は、 break文を記述します。
次のコードでは、if文を使ってループカウンタが5になった時に、 breakでfor文を抜け出しています。
for ($i = 1; $i -le 10; $i++) { # 5の時に抜け出す if ($i -eq 5){ break } }
for文の次のループへ進むcontinue文
for文のスクリプトブロック内の処理を途中で終了して、 for文を抜け出すのではなく 次のループへ進みたい場合はcontinue文を使います。
次のコードでは、先ほどの1から10までの数値を足すコードを少し改造します。 ループカウンタが5の場合だけ、 continue文で処理をスキップして次のループへ進みます。 結果として5以外の数値が足し算されて合計値は50となります。
$sum = 0 for ($i = 1; $i -le 10; $i++) { # 5だけスキップ if ($i -eq 5){ continue } $sum += $i } Write-Host "合計: $sum" # 実行結果 50