about_For
Breve descrizione
Descrive un comando del linguaggio che è possibile usare per eseguire istruzioni in base a un test condizionale.
Descrizione lunga
L'istruzione For
(nota anche come For
ciclo) è un costrutto del linguaggio che è possibile usare per creare un ciclo che esegue comandi in un blocco di comandi mentre una condizione specificata restituisce $true
.
Un uso tipico del ciclo consiste nell'iterare For
una matrice di valori e per operare su un subset di questi valori. Nella maggior parte dei casi, se si desidera eseguire l'iterazione di tutti i valori in una matrice, è consigliabile usare un'istruzione Foreach
.
Sintassi
Di seguito viene illustrata la sintassi dell'istruzione For
.
for (<Init>; <Condition>; <Repeat>)
{
<Statement list>
}
Il segnaposto Init rappresenta uno o più comandi eseguiti prima dell'inizio del ciclo. In genere si usa la parte Init dell'istruzione per creare e inizializzare una variabile con un valore iniziale.
Questa variabile sarà quindi la base per la condizione da testare nella parte successiva dell'istruzione For
.
Il segnaposto Condition rappresenta la parte dell'istruzione For
che si risolve in un $true
valore booleano o$false
. PowerShell valuta la condizione ogni volta che viene eseguito il For
ciclo. Se l'istruzione è $true
, i comandi nel blocco di comando vengono eseguiti e l'istruzione viene valutata di nuovo. Se la condizione è ancora $true
, i comandi nell'elenco Istruzioni vengono eseguiti di nuovo.
Il ciclo viene ripetuto fino a quando la condizione diventa $false
.
Il segnaposto Repeat rappresenta uno o più comandi, separati da virgole, che vengono eseguiti ogni volta che il ciclo si ripete. In genere, questa operazione viene usata per modificare una variabile testata all'interno della parte Condition dell'istruzione .
Il segnaposto elenco istruzioni rappresenta un set di uno o più comandi eseguiti ogni volta che il ciclo viene immesso o ripetuto. Il contenuto dell'elenco Istruzioni è circondato da parentesi graffe.
Supporto per più operazioni
Le sintassi seguenti sono supportate per più operazioni di assegnazione nell'istruzione Init :
# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $i++)
{
"`$i:$i"
"`$j:$j"
}
Le sintassi seguenti sono supportate per più operazioni di assegnazione nell'istruzione Repeat :
# Comma separated assignment expressions.
for (($i = 0), ($j = 0); $i -lt 10; $i++, $j++)
{
"`$i:$i"
"`$j:$j"
}
# Comma separated assignment expressions enclosed in parentheses.
for (($i = 0), ($j = 0); $i -lt 10; ($i++), ($j++))
{
"`$i:$i"
"`$j:$j"
}
# Sub-expression using the semicolon to separate statements.
for ($($i = 0;$j = 0); $i -lt 10; $($i++;$j++))
{
"`$i:$i"
"`$j:$j"
}
Nota
Le operazioni diverse da pre o post increment possono non funzionare con tutte le sintassi.
Per più condizioni , usare operatori logici come illustrato nell'esempio seguente.
for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
"`$i:$i"
"`$j:$j"
}
Per altre informazioni, vedere about_Logical_Operators.
Esempio
Almeno, un'istruzione For
richiede la parentesi che circonda la parte Init, Condition e Repeat dell'istruzione e un comando circondato da parentesi graffe nell'elenco istruzioni dell'istruzione.
Si noti che gli esempi futuri mostrano intenzionalmente il codice all'esterno dell'istruzione For
. Negli esempi successivi il codice è integrato nell'istruzione For
.
Ad esempio, l'istruzione $i
seguente For
visualizza continuamente il valore della variabile finché non si interrompe manualmente il comando premendo CTRL+C.
$i = 1
for (;;)
{
Write-Host $i
}
È possibile aggiungere comandi aggiuntivi all'elenco di istruzioni in modo che il valore di $i
venga incrementato per 1 ogni volta che viene eseguito il ciclo, come illustrato nell'esempio seguente.
for (;;)
{
$i++; Write-Host $i
}
Fino a quando non si interrompe il comando premendo CTRL+C, questa istruzione visualizzerà continuamente il valore della $i
variabile man mano che viene incrementato di 1 ogni volta che viene eseguito il ciclo.
Anziché modificare il valore della variabile nell'elenco di istruzioni dell'istruzione, è possibile usare la parte Repeat dell'istruzione For
For
, come indicato di seguito.
$i=1
for (;;$i++)
{
Write-Host $i
}
Questa istruzione si ripeterà ancora indefinita fino a quando non si interrompe il comando premendo CTRL+C.
È possibile terminare il For
ciclo usando una condizione. È possibile inserire una condizione usando la parte Condition dell'istruzione For
. Il For
ciclo termina quando la condizione restituisce $false
.
Nell'esempio seguente il For
ciclo viene eseguito mentre il valore di $i
è minore o uguale a 10.
$i=1
for(;$i -le 10;$i++)
{
Write-Host $i
}
Anziché creare e inizializzare la variabile all'esterno For
dell'istruzione, è possibile eseguire questa attività all'interno For
del ciclo usando la parte Init dell'istruzione For
.
for($i=1; $i -le 10; $i++){Write-Host $i}
È possibile usare il ritorno a capo anziché i punti e virgola per delimitare le parti Init, Condition e Repeat dell'istruzione For
. Nell'esempio seguente viene illustrato un For
oggetto che usa questa sintassi alternativa.
for ($i = 0
$i -lt 10
$i++){
$i
}
Questa forma alternativa dell'istruzione For
funziona nei file di script di PowerShell e al prompt dei comandi di PowerShell. Tuttavia, è più semplice usare la sintassi dell'istruzione For
con punti e virgola quando si immettono comandi interattivi al prompt dei comandi.
Il For
ciclo è più flessibile del Foreach
ciclo perché consente di incrementare i valori in una matrice o in una raccolta usando i modelli. Nell'esempio seguente la $i
variabile viene incrementata di 2 nella parte Ripeti dell'istruzione For
.
for ($i = 0; $i -le 20; $i += 2)
{
Write-Host $i
}
Il For
ciclo può essere scritto anche su una riga come nell'esempio seguente.
for ($i = 0; $i -lt 10; $i++) { Write-Host $i }