Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 , foreach, forveya do döngüsü gibi bir whiledö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 , foreachveya forgibi whileherhangi bir döngü anahtar sözcüğünü belirtebilir.
Aşağıdaki örnekte deyimden çıkmak break için deyiminin for 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 for çıkar$i. Deyimi 10'dan büyük olana kadar forTrue olarak değerlendirilse $i 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üğü whiletakip 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 while deyimi vardırfor:
:myLabel while (<condition 1>) {
foreach ($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 = $cyeniden 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 break kullanma switch
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 word2başlatılır. deyimi, switch değişken değerini ilk olarak terimiyle eşleştirmek için word2 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 break kullanma trap
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 kapana kısılmış bir trap ö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
Attempted to divide by zero.
At line:10 char:6
+ "1 / $i = " + (1 / $i--)
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RuntimeException
Bir döngü, breakveya dışında kullanmayın switchtrap
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.
break Komut dosyası bloğu gibi bir ForEach-Object işlem hattı breakiçinde kullanıldığında işlem hattından çıkmakla olmaz, aynı zamanda çalışma alanının tamamını da sonlandırabilir.
Ayrıca bakınız
PowerShell