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