about_Break
Kısa açıklama
Geçerli denetim bloğundan break
çıkmak için bir yol sağlayan deyimini açıklar.
Uzun açıklama
deyimi break
geçerli denetim bloğundan çıkmak için bir yol sağlar.
Yürütme, denetim bloğundan sonraki deyimde devam eder. deyimi etiketleri destekler. Etiket, betikteki bir deyime atadığınız addır.
Döngüler içinde kullanma break
break
Bir deyimi , for
, do
veya while
döngüsü gibi bir foreach
döngüde göründüğünde, PowerShell döngüden hemen çıkar.
Deyimi break
, eklenmiş döngülerden çıkmanıza olanak tanıyan bir etiket içerebilir. Bir etiket, bir betikte , for
veya while
gibi foreach
herhangi bir döngü anahtar sözcüğünü belirtebilir.
Aşağıdaki örnekte deyimden çıkmak for
için deyiminin break
nasıl kullanılacağı gösterilmektedir:
for($i=1; $i -le 10; $i++) {
Write-Host $i
break
}
Bu örnekte, break
değişkeni 1'e eşit olduğunda deyimi döngüden $i
çıkarfor
. Deyimi 10'dan büyük olana kadar $i
True olarak değerlendirilse for
de, döngü ilk kez çalıştırıldığında PowerShell kesme deyimine for
ulaşır.
deyimini iç koşulun break
karşılanması gereken bir döngüde kullanmak daha yaygındır. Aşağıdaki foreach
deyim örneğini göz önünde bulundurun:
$i=0
$varB = 10,20,30,40
foreach ($val in $varB) {
if ($val -eq 30) {
break
}
$i++
}
Write-Host "30 was found in array index $i"
Bu örnekte deyimi diziyi foreach
$varB
yineler. deyimi if
, döngünün ilk iki kez çalıştırıldığında False olarak değerlendirilir ve değişken $i
1 artırılır. Döngü üçüncü kez çalıştırıldığında, $i
2'ye eşittir ve $val
değişken 30'a eşittir. Bu noktada deyimi çalıştırılır break
ve foreach
döngü çıkar.
Döngüde etiketlenmiş break
bir kullanma
Deyim break
bir etiket içerebilir. Anahtar sözcüğünü break
bir etiketle kullanırsanız, PowerShell geçerli döngüden çıkmak yerine etiketlenmiş döngüden çıkar.
Etiket, iki nokta üst üste ve ardından atadığınız bir addır. Etiket bir deyimdeki ilk belirteç olmalı ve bunu gibi döngü anahtar sözcüğü while
takip etmelidir.
break
yürütmeyi etiketlenmiş döngünün dışına taşır. Katıştırılmış döngülerde bu, anahtar sözcüğün break
kendisi tarafından kullanıldığında elde edilenden farklı bir sonuca sahiptir. Bu örnekte deyimi olan bir for
deyimi vardırwhile
:
: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
Koşul 2 True olarak değerlendirilirse, betiğin yürütülmesi etiketli döngüden sonra deyimine atlar. Örnekte, yürütme deyimiyle $a = $c
yeniden başlar.
Aşağıdaki örnekte gösterildiği gibi birçok etiketli döngünün iç içe yerleştirebilirsiniz.
: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
Değişken True olarak değerlendirilirse, betiğin yürütülmesi "kırmızı" etiketli döngüden sonra devam eder. $c
Değişken True olarak değerlendirilirse, betik denetiminin yürütülmesi "sarı" etiketli döngüden sonra devam eder.
$a
Değişken True olarak değerlendirilirse, yürütme en içteki döngüden sonra devam eder. Etiket gerekmez.
PowerShell, etiketlerin yürütmeyi ne kadar sürdürebileceğini sınırlamaz. Etiket, denetimi betik ve işlev çağrısı sınırları arasında bile geçirebilir.
Deyiminde switch
kullanma break
Bir switch
yapıda PowerShell'in break
kod bloğundan switch
çıkmasına neden olur.
anahtar break
sözcüğü, yapısından switch
ayrılmak için kullanılır. Örneğin, aşağıdaki switch
deyim, en belirli koşulu test etmek için deyimleri kullanır 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
}
}
Bu örnekte $var
değişkeni oluşturulur ve dize değerine word2
başlatılır. deyimi, switch
değişken değerini ilk olarak terimiyle word2
eşleştirmek için Regex sınıfını kullanır. Değişken değeri ve deyimindeki switch
ilk test eşleştiğinden, deyimindeki switch
ilk kod bloğu çalışır.
PowerShell ilk break
deyime ulaştığında deyiminden switch
çıkar. Dört break
deyim örnekten kaldırılırsa, dört koşulun tümü yerine getirilir. Bu örnek, break
en belirli koşul karşılandığında sonuçları görüntülemek için deyimini kullanır.
Deyiminde trap
kullanma break
Deyiminin trap
gövdesinde yürütülen son deyim ise break
, hata nesnesi gizlenip özel durum yeniden oluşturulur.
Aşağıdaki örnek deyimi kullanılarak trap
kapana kısılmış bir DivideByZeroException özel durumu oluşturur.
function test {
trap [DivideByZeroException] {
Write-Host 'divide by zero trapped'
break
}
$i = 3
'Before loop'
while ($true) {
"1 / $i = " + (1 / $i--)
}
'After loop'
}
test
Yürütmenin özel durumda durduğuna dikkat edin. Hiçbir After loop
zaman ulaşılamazdı.
Yürütülür sonra trap
özel durum yeniden oluşturulur.
Before loop
1 / 3 = 0.333333333333333
1 / 2 = 0.5
1 / 1 = 1
divide by zero trapped
ParentContainsErrorRecordException:
Line |
10 | "1 / $i = " + (1 / $i--)
| ~~~~~~~~~~~~~~~~~~~~~~~~
| Attempted to divide by zero.
Bir döngü, switch
veya dışında kullanmayın break
trap
break
Bunu doğrudan destekleyen bir yapı dışında kullanıldığında (döngüler, switch
, trap
), PowerShell kapsayan bir yapı için çağrı yığınını arar. Kapsayan bir yapı bulamazsa, geçerli çalışma alanı sessizce sonlandırılır.
Bu, yanlışlıkla onu destekleyen bir break
kapalı yapı dışında kullanan işlevlerin ve betiklerin çağıranlarını istemeden sonlandırabileceği anlamına gelir.
Komut break
dosyası bloğu gibi bir ForEach-Object
işlem hattının break
içinde kullanılması işlem hattından çıkmakla olmaz, aynı zamanda çalışma alanının tamamını da sonlandırabilir.
Ayrıca bkz.
PowerShell