簡短描述
描述可用於立即退出 Foreach、For、While、Do 或 Switch 語句的語句。
長描述
當 Break 語句出現在迴圈中(如 Foreach、For 或 While 迴圈)時,Break 語句會導致 PowerShell 立即退出迴圈。 在 Switch 構造中, Break 會導致 PowerShell 退出 Switch 代碼塊。
Break 語句可以包含一個標籤,用於退出嵌入的迴圈。 標籤可以在腳本中指定任何循環關鍵字,例如 Foreach、For 或 While。
以下示例演示如何使用 Break 語句退出 For 語句:
for($i=1; $i -le 10; $i++) {
Write-Host $i
break
}
在此示例中,當 $i 變數等於 1 時,Break 語句退出 For 迴圈。 即使 For 語句的計算結果為 True,直到 Blade 大於 $i,PowerShell 也會在首次運行 For 循環時到達 break 語句。
在必須滿足內部條件的迴圈中使用 Break 語句更為常見。 請考慮以下 Foreach 語句示例:
$i=0
$varB = 10,20,30,40
foreach ($val in $varB) {
$i++
if ($val -eq 30) {
break
}
}
Write-Host "30 was found in array position $i"
在此示例中,Foreach 語句反覆運算 $varB 陣列。 每次運行代碼塊時,$i 變數都會增加 1。 If 語句在運行迴圈的前兩次時計算為 False。 第三次運行迴圈時,$i 等於 3,$val 變數等於 30。 此時,Break 語句運行,並且 Foreach 迴圈退出。
跳出其他迴圈語句的方式與跳出 Foreach 迴圈的方式相同。 在下面的示例中,當使用 Trap 語句捕獲 DivideByZeroException 異常時,Break 語句退出 While 語句。
$i = 3
while ($true) {
trap [DivideByZeroException] {
Write-Host 'divide by zero trapped'
break
}
1 / $i--
}
Break 語句可以包含標籤。 如果將 Break 關鍵字與標籤一起使用,則 PowerShell 將退出帶標籤的迴圈,而不是退出當前迴圈。 標籤的語法如下(此範例顯示了 While 循環中的標籤):
:myLabel while ()<condition> { <statement list>}
卷標是冒號,後面接著您指派的名稱。 標籤必須是語句中的第一個標記,並且必須後跟循環關鍵字,例如 While。
在 PowerShell 中,只有循環關鍵字(如 Foreach、For 和 While)可以具有標籤。
Break 將執行移出 labeled 迴圈。 在嵌入式迴圈中,這與 Break 關鍵字單獨使用時的結果不同。 此示意圖示例具有 While 語句和 For 語句:
:myLabel while (<condition 1>) {
for ($item in $items) {
if (<condition 2>) {
break myLabel
}
$item = $x # A statement inside the For-loop
}
}
$a = $c # A statement after the labeled While-loop
如果條件 2 的計算結果為 True,則腳本的執行將跳到標記循環之後的語句。 在此範例中,執行從語句 「$a = $c」 重新開始。
您可以嵌套許多帶標籤的迴圈,如下面的原理圖示例所示。
:red while (<condition1>) {
:yellow while (<condition2>) {
while (<condition3>) {
if ($a) {break}
if ($b) {break red}
if ($c) {break yellow}
}
Write-Host "After innermost loop"
}
Write-Host "After yellow loop"
}
Write-Host "After red loop"
如果 $b 變數的計算結果為 True,則腳本的執行將在標記為 “red” 的循環後繼續執行。 如果 $c 變數的計算結果為 True,則腳本控件的執行將在標記為“yellow”的循環後繼續執行。
如果 $a 變數的計算結果為 True,則執行將在最內層循環後恢復。 不需要標籤。
PowerShell 不會限制標籤可以繼續執行的時間。 標籤甚至可以跨腳本和函數調用界限傳遞控制件。
Break 關鍵字用於離開 Switch 構造。 例如,下面的 Switch 語句使用 Break 語句來測試最具體的條件:
$var = "word2"
switch -regex ($var) {
"word2" {
Write-Host "Exact" $_
break
}
"word.*" {
Write-Host "Match on the prefix" $_
break
}
"w.*" {
Write-Host "Match on at least the first letter" $_
break
}
default {
Write-Host "No match" $_
break
}
}
在此範例中,將創建 $var 變數並將其初始化為字串值“word2”。 Switch 語句使用 Regex 類首先將變數值與術語 “word2” 匹配。 (Regex 類是正則表達式 Microsoft .NET Framework 類。由於 Switch 語句中的變數值和第一個測試匹配,因此 Switch 語句中的第一個代碼塊將運行。
當 PowerShell 到達第一個 Break 語句時,Switch 語句退出。 如果從範例中刪除四個 Break 語句,則滿足所有四個條件。 此示例使用 break 語句在滿足最具體條件時顯示結果。