Sei sulla pagina 1di 4

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

Potrebbero piacerti anche