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 çıkmak için bir yol sağlayan break deyimini açıklar.
Uzun açıklama
break deyimi geçerli denetim bloğundan çıkmak için bir yol sağlar.
Yürütme, denetim bloğundan sonraki deyimde devam eder. Açıklama etiketleri destekler. Etiket, betikteki bir deyime atadığınız addır.
döngülerde break kullanma
break, foreach, forveya do döngüsü gibi bir döngüde while deyimi görüntülendiğinde PowerShell döngüden hemen çıkar.
break deyimi, eklenmiş döngülerden çıkmanıza olanak tanıyan bir etiket içerebilir. Etiket, betikte foreach, forveya whilegibi herhangi bir döngü anahtar sözcüğü belirtebilir.
Aşağıdaki örnekte, break deyiminden çıkmak için for deyiminin 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 for deyimi $i döngüsünden çıkar.
bir iç koşulun karşılanması gereken bir döngüde break deyimini kullanmak daha yaygındır. Aşağıdaki foreach deyimi ö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, foreach deyimi $varB dizisini yineler.
if deyimi, döngünün ilk iki kez çalıştırıldığında False olarak değerlendirilir ve $i değişkeni 1 artırılır. Döngü üçüncü kez çalıştırıldığında, $i 2'ye ve $val değişkeni 30'a eşittir. Bu noktada, break deyimi çalıştırılır ve foreach döngüsü çıkar.
Döngüde etiketli break kullanma
break deyimi etiket içerebilir.
break anahtar sözcüğünü 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. Etiketin bir deyimdeki ilk belirteç olması ve ardından whilegibi döngü anahtar sözcüğünün izlenmesi gerekir.
break yürütmeyi etiketlenmiş döngünün dışına taşır. Katıştırılmış döngülerde bu, tek başına kullanıldığında break anahtar sözcüğünden farklı bir sonuca sahiptir. Bu örnekte while deyimine sahip bir for deyimi vardır:
: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 Trueolarak değerlendirilirse, betiğin yürütülmesi etiketli döngüden sonra deyimine atlar. Örnekte yürütme işlemi $a = $cdeyimiyle 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şkeni True olarak değerlendirilirse, betiğin yürütülmesi "kırmızı" etiketli döngüden sonra devam eder.
$c değişkeni True olarak değerlendirilirse, betik denetiminin yürütülmesi "sarı" etiketli döngüden sonra devam eder.
$a değişkeni 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.
break deyiminde switch kullanma
switchyapısında break PowerShell'in switch kod bloğundan çıkmasına neden olur.
break anahtar sözcüğü, switch yapısını bırakmak için kullanılır. Örneğin, aşağıdaki switch deyimi en belirli koşulu test etmek için break deyimlerini kullanır:
$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 word2dize değerine başlatılır.
switch deyimi, 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 switch deyimindeki ilk test eşleştiğinden, switch deyimindeki ilk kod bloğu çalışır.
PowerShell ilk break deyimine ulaştığında, switch deyiminden çıkar. Dört break deyimi örnekten kaldırılırsa, dört koşul da karşılar. Bu örnekte, en belirli koşul karşılandığında sonuçları görüntülemek için break deyimi kullanılır.
break deyiminde trap kullanma
trap deyiminin gövdesinde yürütülen son deyim breakise, 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.
After loop hiçbir zaman ulaşılamazdı.
özel durum, trap yürütülür sonra 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.
döngü, breakveya switch dışında trap kullanmayın
Bu, onu destekleyen bir kapalı yapı dışında yanlışlıkla bir
break betik bloğu gibi bir işlem hattı breakiçinde ForEach-Object kullanmak işlem hattından çıkmakla olmaz, aynı zamanda çalışma alanının tamamını da sonlandırabilir.