Sdílet prostřednictvím


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, donebo 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.

Viz také