ARGOMENTO about_Break DESCRIZIONE BREVE Descrive un'istruzione che è possibile utilizzare per uscire immediatamente dalle istruzioni Foreach, For, While, Do o Switch. DESCRIZIONE DETTAGLIATA Quando un'istruzione Break viene visualizzata in un ciclo, ad esempio Foreach, For, Switch o While, l'istruzione Break provoca l'uscita immediata di Windows PowerShell dal ciclo. In un costrutto Switch che non esegue il ciclo, Break provoca l'uscita immediata di Windows PowerShell dal blocco di codice di Switch. Un'istruzione Break può includere un'etichetta che consente di uscire dai cicli incorporati. Un'etichetta può specificare qualsiasi parola chiave del ciclo, ad esempio Foreach, For o While, in uno script. Quando si utilizza un'etichetta, l'istruzione Break esce dal ciclo specificato, indipendentemente dal ciclo in cui si trova. Nell'esempio seguente viene illustrato come utilizzare 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 causa l'uscita dal ciclo For quando la variabile $i è uguale a 1. Anche se l'istruzione For restituisce il valore True finché $i è maggiore di 10, Windows PowerShell raggiunge l'istruzione Break alla prima esecuzione del ciclo For. È più comune utilizzare l'istruzione Break in un ciclo in cui deve essere soddisfatta una condizione interna. Si consideri l'esempio di istruzione Foreach seguente: $i=0 $varB = 10,20,30,40 foreach ($val in $varB) { $i++ if ($val -eq 30) { break } } Write-Host "30 è stato trovato nella posizione di matrice $i" In questo esempio, l'istruzione Foreach scorre la matrice $varB. Ogni volta che viene eseguito il blocco di codice, la variabile $i viene incrementata di 1. L'istruzione If restituisce False alle prime due esecuzioni del ciclo. Alla terza esecuzione del ciclo, $i è uguale a 3 e la variabile $val è uguale a 30. A questo punto, viene eseguita l'istruzione Break che causa l'uscita dal ciclo Foreach. L'uscita dalle altre istruzioni di ciclo avviene allo stesso modo in cui si esce dal ciclo Foreach. Nell'esempio seguente, l'istruzione Break causa l'uscita da un'istruzione While quando viene intercettata un'eccezione DivideByZeroException mediante l'istruzione Trap. $i = 3 while ($true) { trap [DivideByZeroException] { Write-Host "intercettata divisione per zero" break } 1 / $i-- } Un'istruzione Break può includere un'etichetta. Se si utilizza la parola chiave Break con un'etichetta, Windows PowerShell esce dal ciclo etichettato anziché uscire dal ciclo corrente. La sintassi di un'etichetta è la seguente (in questo esempio viene illustrata un'etichetta in un ciclo While): :myLabel while (<condizione>) { <elenco istruzioni>} L'etichetta è costituita dai 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 di ciclo, ad esempio While. In Windows PowerShell, solo le parole chiave di ciclo, ad esempio Foreach, For e While, possono avere un'etichetta. Break provoca l'uscita dell'esecuzione dal ciclo etichettato. Nei cicli incorporati, il risultato sarà diverso da quello ottenuto quando si utilizza la parola chiave Break da sola. In questo esempio viene presentata un'istruzione While con un'istruzione For: :myLabel while (<condizione 1>) { for ($item in $items) { if (<condizione 2>) { break myLabel } $item = $x # Un'istruzione nel ciclo For } } $a = $c # Un'istruzione dopo il ciclo While etichettato Se la condizione 2 restituisce True, l'esecuzione dello script salta all'istruzione successiva al ciclo etichettato. Nell'esempio, l'esecuzione inizia nuovamente con l'istruzione "$a = $c". È possibile nidificare molti cicli etichettati, come illustrato nel seguente esempio. :red while (<condizione1>) { :yellow while (<condizione2>) { while (<condizione3>) { if ($a) {break} if ($b) {break red} if ($c) {break yellow} } # Dopo il ciclo più interno } # Dopo il ciclo "yellow" } # Dopo il ciclo "red" Se la variabile $b restituisce True, l'esecuzione dello script riprende dopo il ciclo con etichetta "red". Se la variabile $c restituisce True, l'esecuzione del controllo di script riprende dopo il ciclo con etichetta "yellow". Se la variabile $a restituisce True, l'esecuzione riprende dopo il ciclo più interno. Non è necessaria alcuna etichetta. Windows PowerShell non limita la ripresa dell'esecuzione da parte delle etichette. L'etichetta può anche passare il controllo attraverso limiti di script e chiamata di funzione. La parola chiave Break è utilizzata per uscire dal costrutto Switch. Ad esempio, nell'istruzione Switch riportata di seguito vengono utilizzate le istruzioni Break per effettuare il testo della condizione più specifica: $var = "parola2" switch -regex ($var) { "parola2" { Write-Host "Esatto" $_ break } "parola.*" { Write-Host "Corrispondenza con prefisso" $_ break } "p.*" { Write-Host "Corrispondenza almeno con la prima lettera" $_ break } default { Write-Host "Nessuna corrispondenza" $_ break } } In questo esempio, la variabile $var viene creata e inizializzata sul valore stringa "parola2". L'istruzione Switch utilizza la classe Regex per confrontare il valore della variabile con il termine "parola2". La classe Regex è una classe dell'espressione regolare Microsoft .NET Framework. Poiché il valore della variabile e il primo test nell'istruzione Switch corrispondono, viene eseguito il primo blocco di codice nell'istruzione Switch. Quando Windows PowerShell raggiunge la prima istruzione Break, l'istruzione Switch causa l'uscita. Se le quattro istruzioni Break vengono rimosse dall'esempio, vengono soddisfatte tutte e quattro le condizioni. In questo esempio viene utilizzata l'istruzione Break per visualizzare i risultati quando viene soddisfatta la condizione più specifica. VEDERE ANCHE about_Comparison_Operators about_For about_Foreach about_Switch about_While