about_Continue
簡短描述
描述語句如何 continue
立即將程式流程傳回至程序迴圈、 switch
語句或 trap
語句的頂端。
完整描述
continue
語句提供結束目前控制區塊但繼續執行的方式,而不是完全結束。 語句支持標籤。
標籤是您指派給文稿中語句的名稱。
在迴圈中使用繼續
未標記的continue
語句會立即將程式流程傳回至由、 foreach
、 do
或 while
語句控制for
的最內部循環頂端。 迴圈的目前反覆項目會終止,迴圈會繼續進行下一個反覆專案。
在下列範例中,如果$ctr
變數等於 5,程式流程會傳回循環頂端while
。 因此,除了5之外,會顯示介於1到10之間的所有數位:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
使用 for
迴圈時,執行會繼續在 <Repeat>
語句上執行,後面接著 <Condition>
測試。 在下列範例中,不會發生無限循環,因為的遞減 $i
會在 關鍵詞之後 continue
發生。
# <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
語句會終止反覆專案的執行,並將控制權傳輸至目標封入反覆運算或 switch
語句標籤。
在下列範例中,當 為 True 時$condition
,最for
內部會終止,而反覆專案會繼續執行位於 labelB
的第二個for
迴圈。
: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
專案。
當單一輸入項目 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
, (迴圈、 switch
、 trap
) ,PowerShell 會查閱封入建構的 呼叫堆棧 。 如果找不到封入建構,則會以無訊息方式終止目前的 Runspace。
這表示不小心使用 continue
支援它的封入建構外部的函式和腳本,可能會不小心終止其 呼叫端。
在管線內使用 continue
,例如 ForEach-Object
腳本區塊,不僅會結束管線,也會終止整個 Runspace。