繰り返し文

for / foreach / while / do…while / do…until / フロー制御

forステートメント

構文

:loop_label for (initialization; condition; increment) {
    statement_block
}

実例

PS> $array = 1..3
PS> for ($i = 0; $i -lt $array.Count; $i++) {
>>     Write-Host ($array[$i] * 2)
>> }
>>
2
4
6

foreachステートメント

構文

:loop_label foreach (variable in expression) {
    statement_block
}

実例

PS> $array = 1..3
PS> foreach ($item in $array) {
>>     Write-Host ([Math]::Pow($item,2))
>> }
>>
1
4
9

whileステートメント

構文

:loop_label while (condition) {
    statement_block
}

実例

PS> $command = ""
PS> while ($command -notmatch "quit") {
>>     $command = Read-Host "Enter your Command"
>> }
>>
Enter your Command: a
Enter your Command: quit
PS>

do…whileステートメント

構文

# do...while
:loop_label do {
    statement_block
} while (condition)

実例

PS> $command = ""
PS> do {
>>     $command = Read-Host "Please quit"
>> } while ($command -ne "quit")
>>
Please quit: a
Please quit: quit
PS>

do…untilステートメント

構文

# do...until
:loop_label do {
    statement_block
} until (condition)

実例

PS> $command = ""
PS> do {
>>     $command = Read-Host "Please quit"
>> } until ($command -ne 'quit')
>>
Please quit: quit
Please quit: a
PS>

フロー制御ステートメント

ラベルを付けない場合、単純に内側のループを抜ける

:outer while(条件式){
    while(条件式){
        if(条件式){break}
    }
}

ラベルをつけると、ラベルの付いたループを抜ける

:outer while(条件式){
    while(条件式){
        if(条件式){break outer}
    }
}

実例 ラベル無し

PS> $array = 1..3
PS> $limit = $array[-1]
PS> :outer foreach ($y in $array) {
>>     foreach ($x in $array) {
>>         if ($x -eq $limit) {
>>             Write-Host "limit break"
>>             break
>>         }
>>         Write-Host $x $y
>>     }
>> }
>>
1 1
2 1
limit break
1 2
2 2
limit break
1 3
2 3
limit break

実例 ラベル有り

PS> $array = 1..3
PS> $limit = $array[-1]
PS> :outer foreach ($y in $array) {
>>     foreach ($x in $array) {
>>         if ($x -eq $limit) {
>>             Write-Host "limit break"
>>             break outer # ここだけ違う
>>         }
>>         Write-Host $x $y
>>     }
>> }
>>
1 1
2 1

YouTube

動画による説明はこちら。

参考リンク

Flow control | Microsoft Docs

About For | Microsoft Docs

About ForEach | Microsoft Docs

About Do | Microsoft Docs

About While | Microsoft Docs

About Break | Microsoft Docs

About Continue | Microsoft Docs


スポンサーリンク

最終更新 2022/10/07: update (71568f4)