about_Continue
簡単な説明
ステートメントがプログラム ループ、 continue
ステートメント、 switch
または trap
ステートメントの先頭にプログラム フローをすぐに返す方法について説明します。
詳細な説明
このステートメントは continue
、現在の制御ブロックを終了し、完全に終了するのではなく、実行を続行する方法を提供します。 このステートメントはラベルをサポートしています。
ラベルは、スクリプト内のステートメントに割り当てる名前です。
ループでの続行の使用
ラベルのないcontinue
ステートメントは、プログラム フローを、ステートメントによってdo
for
foreach
while
制御される最も内側のループの先頭に直ちに返します。 ループの現在のイテレーションが終了し、ループは次のイテレーションで続行されます。
次の例では、変数が 5 の場合$ctr
、プログラム フローはループのwhile
先頭に戻ります。 その結果、5 を除く 1 ~ 10 のすべての数値が表示されます。
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
ループを for
使用すると、ステートメントで <Repeat>
実行が続行され、その後にテストが <Condition>
続きます。 次の例では、キーワード (keyword)の後continue
にデクリメント$i
が発生するため、無限ループは発生しません。
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
ラベル付きの Continue をループで使用する
ラベル付きステートメントは continue
、イテレーションの実行を終了し、対象の外側のイテレーションまたは switch
ステートメント ラベルに制御を転送します。
次の例では、最も内側for
が True の場合$condition
に終了し、反復は 2 番目for
のループでlabelB
続行されます。
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
switch ステートメントで continue を使用する
ラベル付けされていない continue
ステートメントは、 switch
現在 switch
のイテレーションの実行を終了し、次の入力項目を取得するためにコントロールを switch
最上位に転送します。
1 つの入力項目 continue
がある場合、ステートメント全体 switch
が終了します。
入力が switch
コレクションの場合、コレクションの switch
各要素がテストされます。 continue
現在のイテレーションが終了し、次のswitch
要素が続行されます。
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
トラップ ステートメントで continue を使用する
本体 trap
でステートメントで実行された最後のステートメントがステートメントである continue
場合、トラップされたエラーは暗黙的に無視され、発生の原因 trap
となったステートメントの直後のステートメントで実行が続行されます。
ループ、スイッチ、またはトラップの外部で続行を使用しない
それを直接サポートするコンストラクトの外部で使用する場合 continue
(ループ、、)trap
、switch
PowerShell は外側のコンストラクトの呼び出し履歴を検索します。 外側のコンストラクトが見つからない場合、現在の実行空間は静かに終了します。
これは、それをサポートする外側のコンストラクトの外側を continue
誤って使用する関数とスクリプトが、誤って呼び出し元を 終了する可能性があることを意味します。
スクリプト ブロックなどのパイプライン内でForEach-Object
使用するとcontinue
、パイプラインが終了するだけでなく、実行空間全体が終了する可能性があります。
関連項目
PowerShell