Freigeben über


about_Continue

Kurze Beschreibung

Beschreibt, wie die continue -Anweisung den Programmfluss sofort an den Anfang einer Programmschleife, einer switch Anweisung oder einer trap Anweisung zurückgibt.

Lange Beschreibung

Die continue -Anweisung bietet eine Möglichkeit, den aktuellen Kontrollblock zu beenden, aber die Ausführung fortzusetzen, anstatt vollständig zu beenden. Die -Anweisung unterstützt Bezeichnungen. Eine Bezeichnung ist ein Name, den Sie einer Anweisung in einem Skript zuweisen.

Verwenden von Continue in Schleifen

Eine nicht beschriftete continue Anweisung gibt den Programmfluss sofort an den Anfang der innersten Schleife zurück, die von einer for- , foreach, do- oder while -Anweisung gesteuert wird. Die aktuelle Iteration der Schleife wird beendet, und die Schleife wird mit der nächsten Iteration fortgesetzt.

Im folgenden Beispiel kehrt der Programmfluss an den Anfang der while Schleife zurück, wenn die $ctr Variable gleich 5 ist. Daher werden alle Zahlen zwischen 1 und 10 mit Ausnahme von 5 angezeigt:

while ($ctr -lt 10)
{
    $ctr += 1
    if ($ctr -eq 5)
    {
        continue
    }

    Write-Host -Object $ctr
}

Wenn Sie eine for Schleife verwenden, wird die Ausführung bei der <Repeat> -Anweisung fortgesetzt, gefolgt vom <Condition> Test. Im folgenden Beispiel tritt keine Unendlichkeitsschleife auf, da die Dekrementierung von $i nach dem continue Schlüsselwort (keyword) erfolgt.

#   <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--
    }
}

Verwenden eines beschrifteten Continue in einer Schleife

Eine beschriftete continue Anweisung beendet die Ausführung der Iteration und überträgt das Steuerelement an die zielorientierte eingeschlossene Iteration oder switch Anweisungsbezeichnung.

Im folgenden Beispiel wird das Innerste for beendet, wenn $conditiontrue ist, und die Iteration wird mit der zweiten for Schleife unter labelBfortgesetzt.

: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
            }
        }
    }
}

Verwenden von continue in einer switch-Anweisung

Eine nicht beschriftete continue Anweisung in einer switch beendet die Ausführung der aktuellen switch Iteration und überträgt das Steuerelement an den Anfang des switch , um das nächste Eingabeelement abzurufen.

Wenn ein einzelnes Eingabeelement vorhanden ist, continue wird die gesamte switch Anweisung beendet. Wenn es sich bei der switch Eingabe um eine Auflistung handelt, wird jedes switch Element der Auflistung getestet. Die continue beendet die aktuelle Iteration und fährt switch mit dem nächsten Element fort.

switch (1,2,3) {
  2 { continue }  # moves on to the next element, 3
  default { $_ }
}
1
3

Verwenden von continue in einer Trap-Anweisung

Wenn die letzte Anweisung, die im Textkörper ausgeführt wird, eine trap Anweisung ist, wird continueder abgefangene Fehler unbeaufsichtigt ignoriert, und die Ausführung wird mit der Anweisung fortgesetzt, die unmittelbar nach der Anweisung folgt, die aufgetreten trap ist.

Verwenden Sie continue nicht außerhalb einer Schleife, eines Schalters oder einer Trap.

Wenn continue außerhalb eines Konstrukts verwendet wird, das es direkt unterstützt (Schleifen, switch, trap), sucht PowerShell den Aufrufstapel für ein schließendes Konstrukt. Wenn es kein schließendes Konstrukt finden kann, wird der aktuelle Runspace still beendet.

Dies bedeutet, dass Funktionen und Skripts, die versehentlich ein continue außerhalb eines eingeschlossenen Konstrukts verwenden, das dies unterstützt, ihre Aufrufer versehentlich beenden können.

Die Verwendung continue innerhalb einer Pipeline, z. B. eines ForEach-Object Skriptblocks, beendet nicht nur die Pipeline, sie beendet möglicherweise den gesamten Runspace.

Weitere Informationen