about_Break

Aggiornamento: maggio 2014

Si applica a: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

Inserire l'introduzione qui.

ARGOMENTO

about_Break

DESCRIZIONE BREVE

In questo articolo viene descritta un'istruzione che consente di uscire immediatamente da istruzioni Foreach, For, While, Do o Switch.

DESCRIZIONE LUNGA

Quando un'istruzione break viene visualizzata in un ciclo, come ad esempio un ciclo Foreach, Switch o While, l'istruzione break fa sì che Windows PowerShell esca immediatamente dal ciclo. In un costrutto Switch senza ciclo, l'istruzione break fa uscire Windows PowerShell dal blocco di codice Switch.

Un'istruzione break può includere un'etichetta che consente di uscire dai cicli integrati. Un'etichetta può specificare qualsiasi parola chiave del ciclo, come ad esempio, Foreach, For o While, in uno script. Quando si usa un'etichetta, l'istruzione break esce dal ciclo specificato. L'istruzione break esce dal ciclo specificato, indipendentemente dal ciclo in cui si trova l'istruzione break.

Nell'esempio seguente viene illustrato come usare un'istruzione break per uscire da un'istruzione For:

        for($i=1; $i -le 10; $i++)
        {
            Write-Host $i
            break
        }

In questo esempio, l'istruzione break esce dal ciclo For quando la variabile $i è uguale a 1. Anche se l'istruzione For restituisce True fino a quando $i è maggiore di 10, Windows PowerShell raggiunge l'istruzione break la prima volta che il ciclo For viene eseguito.

È più comune usare l'istruzione break in un ciclo in cui deve essere soddisfatta una condizione interna. Considerare il seguente esempio di istruzione 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"

In questo esempio, l'istruzione Foreach esegue l'iterazione della matrice $varB. Ogni volta che viene eseguito il blocco di codice, la variabile $i viene incrementata di 1. L'istruzione If restituisce Fale le prime due volte che viene eseguito il ciclo. La terza volta che il ciclo viene eseguito, $i è uguale a 3 e la variabile $val è uguale a 30. A questo punto, l'istruzione break viene eseguita e il ciclo Foreach viene chiuso.

Le altre istruzioni del ciclo vengono interrotte nello stesso modo in cui si esce dal ciclo Foreach. Nell'esempio seguente, l'istruzione break chiude l'istruzione While quando un'eccezione DivideByZeroException viene intercettata con l'istruzione Trap.

        $i = 3
        while ($true)
        {
            trap [DivideByZeroException] 
            {
                Write-Host "divide by zero trapped" 
                break
            }
            1 / $i--
        }

Un'istruzione break può includere un'etichetta. Se si usa la parola chiave Break con un'etichetta, Windows PowerShell esce dal ciclo con etichetta anziché uscire dal ciclo corrente. La sintassi per un'etichetta è la seguente (in questo esempio viene illustrata un'etichetta in un ciclo While):

        :myLabel while (<condition>) { <statement list>}

L'etichetta è composta da due punti seguiti da un nome assegnato dall'utente. L'etichetta deve essere il primo token in un'istruzione e deve essere seguita dalla parola chiave del ciclo, ad esempio While.

In Windows PowerShell, solo le parole chiave Loop, ad esempio, Foreach For e While possono avere un'etichetta.

Break sposta l'esecuzione fuori dal ciclo con etichetta. Nei cicli incorporati, questa operazione ha un risultato diverso rispetto a quello della parola chiave Break quando viene usata da sola. In questo esempio schematico è presenta un'istruzione While con un'istruzione 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

Se la condizione 2 restituisce True, l'esecuzione dello script ignora fino all'istruzione dopo il ciclo con etichetta. Nell'esempio, l'esecuzione inizia nuovamente con l'istruzione "$a = $c".

È possibile nidificare molti cicli etichettati, come illustrato nell'esempio schematico seguente.

        :red while (<condition1>)
        {
            :yellow while (<condition2>)
            {
                while (<condition3>)
                {
                    if ($a) {break}
                    if ($b) {break red}
                    if ($c) {break yellow}
                }
                # After innermost loop
            }
                # After \"yellow\" loop
        }
                # After \"red\" loop

Se la variabile $b restituisce True, l'esecuzione dello script riprende dopo il ciclo etichettato con "rosso". Se la variabile $c restituisce True, l'esecuzione dello script riprende dopo il ciclo etichettato con "giallo".

Se la variabile $a restituisce True, l'esecuzione riprende dopo il ciclo più interno. Non è necessaria alcuna etichetta.

Windows PowerShell non limita la distanza delle etichette che possono riprendere l'esecuzione. L'etichetta può anche passare il controllo tra gli script e la funzione chiamare i limiti.

La parola chiave Break viene usata per lasciare il costrutto Switch. Ad esempio, la seguente istruzione Switch usa le istruzioni break per verificare la condizione più specifica:

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

In questo esempio, la variabile $var viene creata e inizializzata per un valore di stringa uguale a "word2". L'istruzione Switch usa la classe Regex per abbinare il valore della variabile prima con il termine "word2" (la classe Regex è una classe dell'espressione regolare Microsoft .NET Framework). Poiché il valore della variabile e il primo test nell'istruzione Switch corrispondono, il primo blocco di codice nell'istruzione Switch viene eseguito.

Quando Windows PowerShell raggiunge la prima istruzione break, l'istruzione Switch viene chiusa. Se le quattro istruzioni break vengono rimosse dall'esempio, tutte e quattro le condizioni vengono soddisfatte. In questo esempio viene usata l'istruzione break per visualizzare i risultati quando viene soddisfatta la condizione più specifica.

VEDERE ANCHE

about_Comparison_Operato

about_Continue

about_For

about_Foreach

about_Switch

about_Throw

about_Trap

about_Try_Catch_Finally

about_While