PowerShell: while文、do-while文、do-until文によるループ
PowerShellで繰り返し処理を行う際に使える
while文・do-while文・do-until文の3つについて解説します。
表現は似ていますがそれぞれ動作が異なり、
doは「~する」、whileは「~の間」、untilは「~まで」という意味があります。
この3つのループ文を使う際は、ループの終了条件や
ループカウンタの管理を適切に行って無限ループにならないように
注意してください。
while文
while (条件式) { 繰り返したい処理 }
while文ではwhileの後ある条件式がTrueの間、 スクリプトブロックが繰り返し実行されます。 条件式がFalseになるとwhile文を抜け出します。 条件次第では処理が1度も実行されない場合があります。
次のコードはwhile文を使って変数$iが3より小さい間、 ループを継続します。
$i = 0 while ($i -lt 3) { Write-Host $i $i++ } # 実行結果 0 1 2
do-while文
do { 繰り返したい処理 } while (条件式)
do-while文はスクリプトブロック内の処理を1度実行した後、 条件式を評価して条件式がTrueの間、ループを継続します。 while文との違いは、 最低でも1度はスクリプトブロックが実行されることです。
次のコードはdo-while文の具体例です。
$i = 0 do { Write-Host $i $i++ } while ($i -lt 3) # 実行結果 0 1 2
do-until文
do { 繰り返したい処理 } until (条件式)
do-until文はスクリプトブロック内の処理を1度実行した後、
untilの後に記述した条件式がTrueになるまでループを継続します。
逆に言うと条件式がFalseの間ループを継続すると言えます。
英単語whileは「~の間」、untilは「~まで」という逆の意味になります。
次のコードはdo-untilを使って変数$iが 「3以上になるまで」ループを継続します。 do-while文との条件式の書き方の違いに注目してください。
$i = 0 do { Write-Host $i $i++ } until ($i -ge 3) # 実行結果 0 1 2
上のdo-while文とdo-until文のサンプルコードの実行結果は一緒です。 ですが条件式は do-whileが($i -lt 3)、do-untilが($i -ge 3)というように 真逆になるので注意が必要です。 一般的にはdo-untilよりもdo-whileの方が使われます。
break, continue
while, do-while, do-untilのいずれのループも途中で抜け出す場合はbreak、 次のループへ進む場合はcontinueを使用します。