Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
KRÓTKI OPIS
Opisuje instrukcję, której można użyć do natychmiastowego wyjścia z instrukcji Foreach, For, While, Do lub Switch.
DŁUGI OPIS
Gdy instrukcja Break pojawia się w pętli, takiej jak pętla Foreach, For lub While , instrukcja Break powoduje, że program PowerShell natychmiast zamyka pętlę. W konstrukcji Switch Break powoduje, że program PowerShell zamyka blok kodu przełącznika.
Instrukcja Break może zawierać etykietę, która umożliwia zamknięcie osadzonych pętli. Etykieta może określać dowolne słowo kluczowe pętli, takie jak Foreach, For lub While, w skrypcie.
W poniższym przykładzie pokazano, jak za pomocą instrukcji Break wyjść z instrukcji For :
for($i=1; $i -le 10; $i++) {
Write-Host $i
break
}
W tym przykładzie instrukcja Break zamyka pętlę For, gdy zmienna $i jest równa 1. Mimo że instrukcja For ma wartość True, dopóki $i nie jest większa niż 10, program PowerShell osiąga instrukcję break przy pierwszym uruchomieniu pętli For .
Częściej używa się instrukcji Break w pętli, w której musi być spełniony warunek wewnętrzny. Rozważmy następujący przykład instrukcji 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"
W tym przykładzie instrukcja Foreach iteruje tablicę $varB. Za każdym razem, gdy blok kodu jest uruchamiany, zmienna $i jest zwiększana o 1. Instrukcja If zwraca wartość False przy pierwszych dwóch uruchomieniach pętli. Przy trzecim uruchomieniu pętli $i jest równa 3, a zmienna $val jest równa 30. W tym momencie zostanie uruchomiona instrukcja Break, a pętla Foreach zakończy działanie.
Wyrywa się z innych instrukcji pętli w taki sam sposób, w jaki wyrywa się z pętli Foreach. W poniższym przykładzie instrukcja Break zamyka instrukcję While , gdy wyjątek DivideByZeroException jest przechwytywany przy użyciu instrukcji Trap.
$i = 3
while ($true) {
trap [DivideByZeroException] {
Write-Host 'divide by zero trapped'
break
}
1 / $i--
}
Instrukcja Break może zawierać etykietę. Jeśli użyjesz słowa kluczowego Break z etykietą, program PowerShell zakończy pętlę oznaczoną etykietą zamiast zamykać bieżącą pętlę. Składnia etykiety jest następująca (w tym przykładzie pokazano etykietę w pętli while):
:myLabel while (<condition>) { <statement list>}
Etykieta to dwukropek, po którym następuje przypisana nazwa. Etykieta musi być pierwszym tokenem w instrukcji, a po niej musi następować słowo kluczowe pętli, takie jak While.
W programie PowerShell tylko słowa kluczowe pętli, takie jak Foreach, For i While mogą mieć etykietę.
Break przenosi wykonywanie poza pętlę oznaczoną etykietą. W pętlach osadzonych ma to inny wynik niż słowo kluczowe Break, gdy jest używane samodzielnie. Ten schematyczny przykład zawiera instrukcję While z instrukcją 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
Jeśli warunek 2 ma wartość True, wykonanie skryptu przeskakuje w dół do instrukcji po pętli oznaczonej etykietą. W tym przykładzie wykonywanie rozpoczyna się ponownie od instrukcji "$a = $c".
Można zagnieżdżać wiele pętli oznaczonych etykietami, jak pokazano na poniższym schematycznym przykładzie.
: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"
Jeśli zmienna $b ma wartość True, wykonywanie skryptu jest wznawiane po pętli oznaczonej jako "czerwona". Jeśli zmienna $c ma wartość True, wykonywanie kontrolki skryptu jest wznawiane po pętli oznaczonej jako "żółta".
Jeśli zmienna $a ma wartość True, wykonywanie jest wznawiane po najbardziej wewnętrznej pętli. Etykieta nie jest potrzebna.
Program PowerShell nie ogranicza możliwości wznowienia wykonywania etykiet. Etykieta może nawet przekazać kontrolę między granicami skryptu i funkcji.
Słowo kluczowe Break służy do opuszczania konstrukcji Switch. Na przykład poniższa instrukcja Switch używa instrukcji Break do przetestowania najbardziej szczegółowego warunku:
$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
}
}
W tym przykładzie zmienna $var jest tworzona i inicjowana do wartości ciągu "word2". Instrukcja Switch używa klasy Regex w celu dopasowania wartości zmiennej do terminu "word2". (Klasa Regex jest klasą wyrażenia regularnego programu Microsoft .NET Framework). Ponieważ wartość zmiennej i pierwszy test w instrukcji Switch są zgodne, uruchamiany jest pierwszy blok kodu w instrukcji Switch.
Gdy program PowerShell osiągnie pierwszą instrukcję Break, instrukcja Switch zakończy działanie. Jeśli cztery instrukcje Break zostaną usunięte z przykładu, wszystkie cztery warunki są spełnione. W tym przykładzie użyto instrukcji break w celu wyświetlenia wyników, gdy spełniony jest najbardziej szczegółowy warunek.