about_Continue
簡短描述
描述語句如何 continue
立即將程式流程傳回至程序迴圈、 switch
語句或 trap
語句頂端。
詳細描述
continue
語句提供結束目前控制區塊但繼續執行的方式,而不是完全結束。 語句支持標籤。
標籤是您指派給文稿中語句的名稱。
在迴圈中使用繼續
未標記的 continue
語句會立即將程式流程傳回至由 for
、 foreach
、 do
或 while
語句控制的最內層循環頂端。 迴圈目前的反覆專案會終止,迴圈會繼續進行下一個反覆專案。
在下列範例中,如果$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,且反覆運算會在的第二for
個循環labelB
繼續時$condition
終止最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
內switch
未標記的continue
語句會終止目前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。