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 "Weiter" in Schleifen

Eine nicht bezeichnete continue Anweisung gibt den Programmfluss sofort an den Anfang der innersten Schleife zurück, die durch eine for, foreach, oder dowhile eine Anweisung gesteuert wird. Die aktuelle Iteration der Schleife wird beendet, und die Schleife wird mit der nächsten Iteration fortgesetzt.

Im folgenden Beispiel wird der Programmfluss an den Anfang der while Schleife zurückgegeben, 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
}

Bei Verwendung einer for Schleife wird die Ausführung an der <Repeat> Anweisung fortgesetzt, gefolgt vom <Condition> Test. Im folgenden Beispiel tritt keine endlose Schleife auf, da die Dekrementierung nach $i dem continue Schlüsselwort 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 Vorgangs in einer Schleife

Eine beschriftete continue Anweisung beendet die Ausführung der Iteration und überträgt die Steuerung an die gezielte umschließende Iterations- oder switch Anweisungsbezeichnung.

Im folgenden Beispiel wird der innerste for Wert beendet, wenn $condition "True" ist und die Iteration mit der zweiten for Schleife bei .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
            }
        }
    }
}

Verwenden von "Continue" in einer Switch-Anweisung

Eine nicht bezeichnete continue Anweisung innerhalb einer switch beendet die Ausführung der aktuellen switch Iteration und überträgt das Steuerelement an den Oberen Rand des switch Eingabeelements, um das nächste Eingabeelement abzurufen.

Wenn ein einzelnes Eingabeelement continue vorhanden ist, wird die gesamte switch Anweisung beendet. Wenn es sich bei der switch Eingabe um eine Sammlung handelt, werden die switch einzelnen Elemente der Auflistung getestet. Die continue aktuelle Iteration wird beendet, und das switch nächste Element wird fortgesetzt.

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 endgültige Anweisung, die im Textkörper ausgeführt wird, eine trap Anweisung ist continue, wird der abgefangene Fehler im Hintergrund ignoriert, und die Ausführung wird mit der Anweisung fortgesetzt, die unmittelbar nach dem, der aufgetreten ist trap .

Verwenden Sie den Vorgang 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, ), trapsucht PowerShell den Aufrufstapel für ein eingeschlossenes Konstrukt. Wenn ein eingeschlossenes Konstrukt nicht gefunden werden kann, wird der aktuelle Runspace ruhig beendet.

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

Die Verwendung continue in einer Pipeline, z. B. ein ForEach-Object Skriptblock, beendet nicht nur die Pipeline, er beendet möglicherweise den gesamten Runspace.

Siehe auch