about_Continue
Krátký popis
Popisuje, jak continue
příkaz okamžitě vrátí tok programu na začátek smyčky programu, switch
příkazu nebo trap
příkazu.
Dlouhý popis
Příkaz continue
poskytuje způsob, jak ukončit aktuální řídicí blok, ale pokračovat v provádění, nikoli úplně ukončit. Příkaz podporuje popisky.
Popisek je název, který přiřadíte k příkazu ve skriptu.
Použití pokračování ve smyčce
Neoznačené continue
příkaz okamžitě vrátí tok programu na začátek vnitřní smyčky, která je řízena příkazem for
, foreach
, do
nebo while
příkazem. Aktuální iterace smyčky se ukončí a smyčka pokračuje další iterací.
V následujícím příkladu se tok programu vrátí na začátek smyčky while
, pokud $ctr
je proměnná rovna 5. V důsledku toho se zobrazí všechna čísla mezi 1 a 10 s výjimkou 5:
while ($ctr -lt 10)
{
$ctr += 1
if ($ctr -eq 5)
{
continue
}
Write-Host -Object $ctr
}
Při použití for
smyčky bude provádění pokračovat v <Repeat>
příkazu, následovaný testem <Condition>
. V následujícím příkladu nedojde k nekonečné smyčce, protože dekrementace $i
nastane za klíčovým slovem continue
.
# <Init> <Condition> <Repeat>
for ($i = 0; $i -lt 10; $i++)
{
Write-Host -Object $i
if ($i -eq 5)
{
continue
# Will not result in an infinite loop.
$i--
}
}
Použití popisku pokračovat ve smyčce
Příkaz s popiskem continue
ukončí provádění iterace a přenese řízení na cílový iterace nebo switch
popisek příkazu.
V následujícím příkladu je nejvíce vnitřní for
ukončena, pokud $condition
je True a iterace pokračuje s druhou for
smyčkou na labelB
.
:labelA for ($i = 1; $i -le 10; $i++) {
:labelB for ($j = 1; $j -le 10; $j++) {
:labelC for ($k = 1; $k -le 10; $k++) {
if ($condition) {
continue labelB
} else {
$condition = Update-Condition
}
}
}
}
Použití příkazu switch continue
Neoznačené continue
příkazy v rámci switch
ukončení provádění aktuální switch
iterace a přenese řízení na začátek switch
řádku, aby se získala další vstupní položka.
Pokud existuje jedna vstupní položka continue
, ukončí celý switch
příkaz.
switch
Když je vstup kolekcí, testuje switch
každý prvek kolekce. Ukončí continue
aktuální iteraci a switch
pokračuje dalším prvkem.
switch (1,2,3) {
2 { continue } # moves on to the next element, 3
default { $_ }
}
1
3
Použití příkazu pokračovat v příkazu soutisku
Pokud je poslední příkaz spuštěný v těle trap
příkazu continue
, je zachycená chyba bezobslužně ignorována a provádění pokračuje příkazem bezprostředně za příkazem, který způsobil trap
výskyt.
Nepoužívat pokračování mimo smyčku, přepínač nebo soutisk
Pokud continue
se používá mimo konstruktor, který ho přímo podporuje (smyčky, switch
, trap
), PowerShell vyhledá zásobník volání pro uzavřený konstruktor. Pokud nemůže najít uzavřený konstruktor, aktuální runspace se tiše ukončí.
To znamená, že funkce a skripty, které neúmyslně používají continue
vnější konstruktor, který ho podporuje, mohou neúmyslně ukončit své volající.
Použití continue
uvnitř kanálu, například ForEach-Object
bloku skriptu, nejen ukončení kanálu, potenciálně ukončí celý runspace.