Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
KRÁTKÝ POPIS
Popisuje příkaz, který můžete použít k okamžitému ukončení příkazů Foreach, For, While, Do nebo Switch.
DLOUHÝ POPIS
Když se ve smyčce objeví příkaz Break, jako je smyčka Foreach, For nebo While, příkaz Break způsobí, že PowerShell smyčku okamžitě ukončí. V konstruktoru Switch Break způsobí, že PowerShell ukončí blok kódu Switch.
Příkaz Break může obsahovat popisek, který umožňuje ukončit vložené smyčky. Popisek může určovat libovolné klíčové slovo smyčky, například Foreach, For nebo While, ve skriptu.
Následující příklad ukazuje, jak použít příkaz Break k ukončení příkazu For:
for($i=1; $i -le 10; $i++) {
Write-Host $i
break
}
V tomto příkladu příkaz Break ukončí smyčku For, když je proměnná $i rovna 1. I když se příkaz For vyhodnotí jako True, dokud $i není větší než 10, PowerShell dosáhne příkazu break při prvním spuštění smyčky For.
Běžnější je použití příkazu Break ve smyčce, kde musí být splněna vnitřní podmínka. Zvažte následující příklad příkazu 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"
V tomto příkladu příkaz Foreach iteruje pole $varB. Při každém spuštění bloku kódu se proměnná $i zvýší o 1. Příkaz If je vyhodnocen jako False při prvních dvou spuštěních smyčky. Při třetím spuštění smyčky se $i rovná 3 a proměnná $val se rovná 30. V tomto okamžiku se spustí příkaz Break a smyčka Foreach se ukončí.
Z ostatních příkazů ve smyčce se vymaníte stejným způsobem, jako se vymaníte ze smyčky Foreach. V následujícím příkladu příkaz Break ukončí příkaz while, když je výjimka DivideByZeroException zachycena pomocí příkazu Trap.
$i = 3
while ($true) {
trap [DivideByZeroException] {
Write-Host 'divide by zero trapped'
break
}
1 / $i--
}
Příkaz Break může obsahovat popisek. Pokud použijete klíčové slovo Break s popiskem, PowerShell ukončí smyčku s popiskem místo ukončení aktuální smyčky. Syntaxe popisku je následující (tento příklad ukazuje popisek ve smyčce While):
:můjŠtítek while (<condition>) { <statement list>}
Popisek je dvojtečka následovaná názvem, který přiřadíte. Popisek musí být prvním tokenem v příkazu a musí za ním následovat klíčové slovo smyčky, například While.
V PowerShellu mohou mít popisek pouze klíčová slova smyčky, například Foreach, For a While.
Příkaz Break přesune provádění mimo označenou smyčku. Ve vložených smyčkách má tento výsledek jiný než klíčové slovo Break, pokud je použito samo o sobě. Tento schematický příklad má příkaz While s příkazem 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
Pokud je podmínka 2 vyhodnocena jako True, provádění skriptu přeskočí dolů na příkaz za označenou smyčkou. V tomto příkladu začíná provádění znovu příkazem "$a = $c".
Můžete vnořit mnoho označených smyček, jak je znázorněno v následujícím schematickém příkladu.
: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"
Pokud je proměnná $b vyhodnocena jako True, provádění skriptu se obnoví po smyčce, která je označena jako "červená". Pokud je proměnná $c vyhodnocena jako True, provádění ovládacího prvku skriptu se obnoví po smyčce, která je označena jako "žlutá".
Pokud je proměnná $a vyhodnocena jako True, provádění pokračuje po nejvnitřnější smyčce. Není potřeba žádný popisek.
PowerShell neomezuje, jak daleko popisky můžou pokračovat v provádění. Popisek může dokonce předat řízení napříč hranicemi volání skriptu a funkce.
Klíčové slovo Break se používá k opuštění konstrukce Switch. Například následující příkaz Switch používá příkazy Break k testování nejkonkrétnější podmínky:
$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
}
}
V tomto příkladu je proměnná $var vytvořena a inicializována na řetězcovou hodnotu "word2". Příkaz Switch používá třídu Regex k tomu, aby hodnotu proměnné nejprve porovnal s termínem "word2". (Třída Regex je regulární výraz třídy Microsoft .NET Framework.) Vzhledem k tomu, že hodnota proměnné a první test v příkazu Switch se shodují, spustí se první blok kódu v příkazu Switch.
Když PowerShell dosáhne prvního příkazu Break, příkaz Switch se ukončí. Pokud jsou z příkladu odebrány čtyři příkazy Break, jsou splněny všechny čtyři podmínky. V tomto příkladu se příkaz break používá k zobrazení výsledků, pokud je splněna nejspecifičtější podmínka.