Condividi tramite


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 ForFor, 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 }

Vedi anche