主題 about_Break 簡短描述 描述可用來立即結束 Foreach、For、While、Do 或 Switch 陳述式的陳述式。 完整描述 當 Break 陳述式出現在迴圈 (如 Foreach、For、Switch 或 While) 中的時候,Break 陳述式會讓 Windows PowerShell 立即結束迴圈。在不執行迴圈的 Switch 建構中, Break 會讓 Windows PowerShell 結束 Switch 程式碼區塊。 Break 陳述式可以包含能結束內嵌迴圈的標籤。標籤可以在指令碼中指定任何迴圈關鍵 字,例如 Foreach、For 或 While。當您使用標籤時,Break 就會結束指定的迴圈。不 管 Break 陳述式所在的迴圈為何,Break 一律會結束指定的迴圈。 在下列範例中,會示範如何使用 Break 陳述式結束 For 陳述式: for($i=1; $i -le 10; $i++) { Write-Host $i break } 在這個範例中,只要 $i 變數等於 1,Break 陳述式隨即結束 For 迴圈。儘管 For 陳 述式評估為 True 的條件是 $i 大於 10,但 Windows 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 關鍵字,Windows PowerShell 會結束有標籤的迴圈,而不是結束目前的迴圈。標籤的語法如下 (這個範例示範 While 迴 圈中的標籤): :myLabel while (<條件>) { <陳述式清單>} 冒號後面加上指派的名稱即代表標籤。標籤必須是陳述式中的第一個語彙基元,而且後面 必須接著迴圈關鍵字,例如 While。 在 Windows PowerShell 中只有迴圈關鍵字 (如 Foreach、For 和 While) 才能有 標籤。 Break 會讓執行跳離有標籤的迴圈。在有標籤的迴圈中,這個結果與 Break 關鍵字單獨 使用的結果並不相同。下列是一個有 For 陳述式的 While 陳述式的概略範例: :myLabel while (<條件 1>) { for ($item in $items) { if (<條件 2>) { break myLabel } $item = $x # For 迴圈內的陳述式 } } $a = $c # 有標籤的 While 迴圈之後的陳述式 如果條件 2 評估為 True,指令碼的執行會跳至有標籤的迴圈之後的陳述式。在這個範例 中,會再次從 "$a = $c" 陳述式開始執行。 您可以將許多有標籤的迴圈巢狀化,如下列概略範例所示: :red while (<條件1>) { :yellow while (<條件2>) { while (<條件3>) { if ($a) {break} if ($b) {break red} if ($c) {break yellow} } # 在最內層迴圈之後 } # 在 "yellow" 迴圈之後 } # 在 "red" 迴圈之後 如果 $b 變數評估為 True,指令碼的執行會在標籤為 "red" 的迴圈之後繼續。如果 $c 變數評估為 True,指令碼控制的執行會在標籤為 "yellow" 的迴圈之後繼續。 如果 $a 變數評估為 True,指令碼的執行會在最內層迴圈之後繼續。因此,不需要用到 任何標籤。 Windows 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 陳述式中的第一個程式碼區塊便會執行。 當 Windows PowerShell 到達第一個 Break 陳述式時,Switch 陳述式就會結束。如 果將這個範例中的四個 Break 陳述式全部移除,所有四個條件都會符合。這個範例會在 最明確的條件符合時使用 Break 陳述式顯示結果。 請參閱 about_Comparison_Operators about_For about_Foreach about_Switch about_While