繰り返し文
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
動画による説明はこちら。
参考リンク
About ForEach | Microsoft Docs
About Continue | Microsoft Docs
スポンサーリンク