about_Continue
簡単な説明
ステートメントが continue プログラムフロー、ステートメント、または trap ステートメントの switch 先頭にプログラムフローを直ちに返す方法について説明します。
長い説明
ステートメントは continue 、を完全に終了するのではなく、現在のコントロールブロックを終了し、実行を継続する方法を提供します。 ステートメントでは、ラベルがサポートされています。
ラベルは、スクリプト内のステートメントに割り当てる名前です。
Continue in ループの使用
ラベル continue が付けられていないステートメントは、、 do foreach 、、または while ステートメントによって for 制御される最も内側のループの一番上にプログラムフローを直ちに返します。 ループの現在の反復処理が終了し、ループは次の反復処理で続行されます。
次の例では、変数が5に等しい場合 $ctr 、プログラムフローがループの while 先頭に戻ります。 結果として、1から10までのすべての数値が表示されます (5 を除く)。
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
ループを使用 for すると、ステートメントで実行が続行 <Repeat> され、その後にテストが <Condition> 続きます。 次の例では、キーワードの後 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 ステートメントのラベルに制御を転送します。
次の例では、が True の場合 $condition 、最も内側 for のが終了し、の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
Trap ステートメントで continue を使用する
本体 trap で実行された最後のステートメントが continue の場合、トラップされたエラーは警告なしで無視され、実行が発生した trap ステートメントの直後にあるステートメントから実行が続行されます。
ループ、スイッチ、またはトラップの外側で [続行] を使用しない
を直接サポートするコンストラクト (ループ、 switch 、 trap ) の外部でを使用した場合 continue 、PowerShell は外側の構造体の 呼び出し履歴 を検索します。 外側のコンストラクトが見つからない場合、現在の実行空間は自動的に終了します。
これは、それをサポートする外側のコンストラクトの外部でを continue 使用する関数とスクリプトが誤って 呼び出し元 を終了する可能性があることを意味します。
パイプライン内でを使用する continue と ForEach-Object 、パイプラインが終了するだけでなく、実行空間全体が終了する可能性があります。
関連項目
フィードバック
フィードバックの送信と表示