about_For
Kort beskrivning
Beskriver ett språkkommando som du kan använda för att köra instruktioner baserat på ett villkorstest.
Lång beskrivning
-instruktionen For
(kallas även en For
loop) är en språkkonstruktion som du kan använda för att skapa en loop som kör kommandon i ett kommandoblock medan ett angivet villkor utvärderas till $true
.
En vanlig användning av loopen For
är att iterera en matris med värden och att arbeta på en delmängd av dessa värden. Om du i de flesta fall vill iterera alla värden i en matris bör du överväga att använda en Foreach
-instruktion.
Syntax
Följande visar instruktionssyntaxen For
.
for (<Init>; <Condition>; <Repeat>)
{
<Statement list>
}
Platshållaren Init representerar ett eller flera kommandon som körs innan loopen börjar. Du använder vanligtvis Init-delen av -instruktionen för att skapa och initiera en variabel med ett startvärde.
Den här variabeln utgör sedan grunden för villkoret som ska testas i nästa del av -instruktionen For
.
Platshållaren Villkor representerar den del av -instruktionen For
som matchar ett eller $false
booleskt$true
värde. PowerShell utvärderar villkoret varje gång loopen For
körs. Om -instruktionen är $true
körs kommandona i kommandoblocket och -instruktionen utvärderas igen. Om villkoret fortfarande $true
är körs kommandona i instruktionslistan igen.
Loopen upprepas tills villkoret blir $false
.
Platshållaren Upprepa representerar ett eller flera kommandon, avgränsade med kommatecken, som körs varje gång loopen upprepas. Detta används vanligtvis för att ändra en variabel som testas i villkorsdelen av -instruktionen.
Platshållaren för instruktionslistan representerar en uppsättning med ett eller flera kommandon som körs varje gång loopen anges eller upprepas. Innehållet i instruktionslistan omges av klammerparenteser.
Stöd för flera åtgärder
Följande syntaxer stöds för flera tilldelningsåtgärder i Init-instruktionen :
# 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"
}
Följande syntaxer stöds för flera tilldelningsåtgärder i repeat-instruktionen :
# 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"
}
Anteckning
Andra åtgärder än inkrement före eller efter kanske inte fungerar med alla syntaxer.
För flera villkor använder du logiska operatorer, vilket visas i följande exempel.
for (($i = 0), ($j = 0); $i -lt 10 -and $j -lt 10; $i++,$j++)
{
"`$i:$i"
"`$j:$j"
}
Mer information finns i about_Logical_Operators.
Exempel
En instruktion kräver minst For
parentesen kring init-, villkors- och upprepa-delen av -instruktionen och ett kommando omgivet av klammerparenteser i instruktionslistans del av -instruktionen.
Observera att de kommande exemplen avsiktligt visar kod utanför -instruktionen For
. I senare exempel integreras kod i -instruktionen For
.
Följande instruktion visar till exempel For
kontinuerligt värdet för variabeln $i
tills du bryter ut från kommandot manuellt genom att trycka på CTRL+C.
$i = 1
for (;;)
{
Write-Host $i
}
Du kan lägga till ytterligare kommandon i instruktionslistan så att värdet $i
för ökas med 1 varje gång loopen körs, vilket visas i följande exempel.
for (;;)
{
$i++; Write-Host $i
}
Tills du bryter ut från kommandot genom att trycka på CTRL+C visar den här instruktionen kontinuerligt värdet för variabeln $i
eftersom den ökas med 1 varje gång loopen körs.
I stället för att ändra värdet för variabeln i instruktionslistans del av -instruktionen For
kan du använda upprepa-delen av -instruktionen For
i stället, enligt följande.
$i=1
for (;;$i++)
{
Write-Host $i
}
Den här instruktionen upprepas fortfarande på obestämd tid tills du bryter ut kommandot genom att trycka på CTRL+C.
Du kan avsluta loopen For
med ett villkor. Du kan placera ett villkor med hjälp av villkorsdelen av -instruktionen For
. Loopen For
avslutas när villkoret utvärderas till $false
.
I följande exempel körs loopen For
medan värdet $i
för är mindre än eller lika med 10.
$i=1
for(;$i -le 10;$i++)
{
Write-Host $i
}
I stället för att skapa och initiera variabeln utanför -instruktionen For
kan du utföra den här uppgiften i loopen For
med hjälp av Init-delen av -instruktionen For
.
for($i=1; $i -le 10; $i++){Write-Host $i}
Du kan använda vagnreturer i stället för semikolon för att avgränsa delarna Init, Condition och Repeat i -instruktionen For
. I följande exempel visas en For
som använder den här alternativa syntaxen.
for ($i = 0
$i -lt 10
$i++){
$i
}
Den här alternativa formen av -instruktionen For
fungerar i PowerShell-skriptfiler och i PowerShell-kommandotolken. Det är dock enklare att använda instruktionssyntaxen For
med semikolon när du anger interaktiva kommandon i kommandotolken.
Loopen For
är mer flexibel än loopen Foreach
eftersom du kan öka värdena i en matris eller samling med hjälp av mönster. I följande exempel ökas variabeln $i
med 2 i upprepa-delen av -instruktionen For
.
for ($i = 0; $i -le 20; $i += 2)
{
Write-Host $i
}
Loopen For
kan också skrivas på en rad som i följande exempel.
for ($i = 0; $i -lt 10; $i++) { Write-Host $i }