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
PowerShell