FOR loop

I programmering refererar begreppet ”loop” (svenska: slinga, oftast samma ord ”loop”) till en grundläggande programmeringskonstruktion som dess huvudsyfte är att köra en viss kodsekvens upprepade gånger baserat på ett förutbestämt stoppkriterium. Stoppkriteriet kan vara ett specifikt antal objekt i en array, ett angivet antal iterationer (loopkörningar) eller en kodbit som returnerar ett specifikt värde.

I PowerShell erbjuds följande olika typer av loopar:

  • for-loop: Används när du vet det exakta antalet iterationer som behövs.
  • while-loop: Används när du vill fortsätta att upprepa en sekvens så länge ett specifikt villkor är sant.
  • do while-loop: Likt while-loop, men koden i loopen körs minst en gång, och villkoret utvärderas efter varje iteration.
  • foreach-loop: Används för att iterera över elementen i en samling, som en array eller en lista.

FOR loop

FOR loopen används när du vet det exakta antalet iterationer (repetitioner som behövs. Denna loopen består av tre delar som separeras med semikolon:

  1. Startvärde: Definierar där loopen börjar.
  2. Villkor: Anger när loopen ska fortsätta att köra.
  3. Uppdatering: Specificerar hur värdet ska uppdateras efter varje iteration.

Syntax:

for (<Startvärde>; <Villkor>; <Uppdatering>) {
Kod som körs under varje iteration
}

Exempel:

  1. Räkna upp från 1 till 5:
    • for ($i = 1; $i -le 5; $i++) {
      Write-Host ”The Iteration Number is: $i”
      }
    • Utdata:
    • The Iteration Number is: 1
      The Iteration Number is: 2
      The Iteration Number is: 3
      The Iteration Number is: 4
      The Iteration Number is: 5
    • Startvärdet sätts till 1 innan for-loopen startas. Variabeln $i är ansvarig för att hålla värden från 1 till 5 (ett i taget).
    • Villkoret eller testuttryck returnerar ett booleskt värde (True/False) i varje loopiteration som avgör om värdet på $i är mindre än eller lika med 5.
    • Uppdatering används för att uppdatera variabelns värde, vilket kontrolleras i villkorsdelen av loopen. I exemplet ovan är $i++ som ökar värdet på $i med 1.
  2. Använd flera kommando
    • for (($i = 0), ($j = 1); $i -lt 5 -and $j -le 5; $i++, $j++) {
      Write-Host ”i = $i, j = $j”
      }
    • Utdata:
    • i = 0, j = 1
      i = 1, j = 2
      i = 2, j = 3
      i = 3, j = 4
      i = 4, j = 5
    • Det här exemplet liknar det föregående, men vi involverade två variabler, i och j, för att använda flera kommandon (separeras med kommatecken) i varje sektion av for-loopen.
  3. Utdata i olika färger:
    • for ($i=1;$i -le 5;$i++) {
      Write-Host ”This is the color for [$i]” -ForegroundColor $i
      }
    • Utdata:
    • This is the color for [1]
    • This is the color for [2]
    • This is the color for [3]
    • This is the color for [4]
    • This is the color for [5]
  4. Udda tal upp till 9:
    • for ($i = 1; $i -le 10; $i += 2) {
      Write-Output $i
      }
    • Utdata: en kolumn av talen 1, 3, 5, 7, och 9
  5. Skapa flera text-filer i serie:
    • for ($i = 1; $i -le 5; $i++) {
      New-Item -ItemType File -Path (”C:\PShell\File” + $i + ”.txt”)
      }
    • Utdata: Fem filer skapas i katalogen c:\PShell med namn File1.txt, File2.txt och så vidare.

Hittills har vi skrivit kommandona i en och samma rad, vilket är svårt. I stället kan vi börja skriva så här:

PS C:\> for ($i = 1;$i -le 10;$i++) {
>> $square = $i * $i
>> Write-Host ”The square of ”$i ”is” $square
>> }
The square of 1 is 1
The square of 2 is 4
The square of 3 is 9
The square of 4 is 16
The square of 5 is 25
The square of 6 is 36
The square of 7 is 49
The square of 8 is 64
The square of 9 is 81
The square of 10 is 100
PS C:\>

Tecknet ”>>” i PowerShell används som en indikator för att signalera att ett pågående kommando är ofullständigt. När du ser ”>>” i PowerShell-prompten, betyder det att systemet förväntar sig ytterligare inmatning för att slutföra det pågående kommandot. För att lösa detta ska du fortsätta skriva och avsluta det ofullständiga kommandot.

Fler exempel:

  1. Skapa en multiplikationstabell
    • PS C:\>for ($i=0; $i -le 10; $i++) {
    • >>“10 * $i = ” + (10 * $i)
    • >>}
    • Utdata:
    • 10 * 0 = 0
    • 10 * 1 = 1
    • 10 * 2 = 20
    • 10 * 3 = 30
    • och så vidare
  2. Loop med en array:
    • PS C:\>$fruits = @(”Apple”, ”Banana”, ”Orange”)
    • PS C:\>for ($i = 0; $i -lt $fruits.Length; $i++) {
    • >> Write-Output $fruits[$i]
    • }
    • Utdata:
    • Apple
    • Banana
    • Orange
  3. Visa återstående sekunder från 20 med hjälp av en nedräkningstimer:
    • PS C:\>for ($seconds=20; $seconds -gt -1; $seconds–) {
    • >>Write-Host -NoNewLine (”`rseconds remaining: ” + (”{0:d4}” -f $seconds))
    • >>Start-Sleep -Seconds 1
    • >>}
    • Utdata: 0020 och varje sekund mindre 1