PowerShell Foreach Loop

PowerShell Foreach Loop
I programmering er en sløyfe et enkelt, men kraftig konsept. En sløyfe er repetisjonen av et sett med instruksjoner med mindre en viss tilstand er oppfylt. En riktig sløyfe kan spare tid og øke effektiviteten til en kode. PowerShell, som er et skriptspråk, støtter forskjellige former for løkker.

I denne guiden, sjekk ut hvordan du bruker foreach -sløyfen i PowerShell.

PowerShell Loops

I prinsippet er alle løkker de samme. For bedre kodingserfaring og lesbarhet implementerer imidlertid forskjellige programmeringsspråk Loop -konseptet på forskjellige måter. Det samme språket kan faktisk støtte flere typer løkker, hver med sin unike struktur.

PowerShell støtter flere typer løkker.

  • for: en standard sløyfe for å utføre visse oppgaver et bestemt antall ganger.
  • Mens: Det fortsetter å utføre et sett med operasjoner til forholdene er oppfylt.
  • gjør mens: sløyfen fortsetter å løpe så lenge tilstanden er sann. Imidlertid vil det alltid utføre første gang.
  • Gjør-til: det fungerer nesten som å gjøre mens. Den eneste forskjellen er at den bare vil utføre hvis den gitte tilstanden ikke er sann.
  • Foreach-Object: Denne sløyfen utfører en operasjon for hvert inngangsobjekt.

Som tittelen på artikkelen antyder, ser vi på foreach -sløyfen.

Foreach Loop in PowerShell

Koden til foreach -sløyfestrukturen er som følger.

Foreach (vare i samlingen)


Her,

  • Vare: Det er en enkelt verdi eller objekt som endres med hver iterasjon.
  • Samling: Det kan være en rekke, liste over verdier, samling eller objekter.
  • : Det er kodeblokken som kjører når sløyfetilstanden er oppfylt. Den bruker vanligvis varen.

Foreach er en av de vanligste og enkleste PowerShell -løkkene. Den leser en hel samling av elementer, og for hvert element utfører den operasjonen (e).

Det kan brukes i mange situasjoner, for eksempel å jobbe innholdet i en katalog.

Foreach Loop i praksis

I denne delen vil vi se på noen eksempler på implementeringer av foreach -sløyfen. For å utføre kodene, har jeg allerede utarbeidet et tomt PowerShell -skript.

$ nano foreach-loop.PS1

Shebang ville se ut som dette.

$ #!/snap/bin/powershell

Merk Powershell -skriptfilen som en kjørbar.

$ chmod +x foreach-loop.PS1

Foreach gjennom en strengmatrise
I den første demonstrasjonen implementerer vi en foreach -sløyfe som leser fra en streng rekke bynavn og skriver ut bynavnene på skjermen.

Først må du erklære strengarrayen.

$ byer = ("Tokyo", "New York", "Moskva", "London", "Sydney")

Implementer nå foreach -sløyfen for å jobbe med hvert element i matrisen.

Foreach ($ by i $ byer)

Echo $ City

Test koden ved å kjøre skriptet.

$ ./foreach-loop.PS1

Foreach gjennom en samling av tall
I dette eksemplet implementerer vi foreach -sløyfen som ligner på den forrige. Forskjellen er at den vil gå gjennom en rekke tall i stedet.

Forklar nummeret.

$ tall = (9,8,7,6,5,4,3,2,1)

Implementer nå foreach -sløyfen for å skrive ut tallene en etter en.

foreach ($ nummer i $ tall)

ekko $ nummer

La oss sette koden i verk.

$ ./foreach-loop.PS1

Foreach gjennom filer
Det er et av de vanligste scenariene å bruke foreach -løkker. Ved hjelp av andre cmdlets kan vi få spesifikk informasjon om visse kataloger/filer og bruke den informasjonen til å utføre nødvendige handlinger.

I dette eksemplet vil foreach -sløyfen sjekke innholdet i en katalog/home/viktor/desktop/sample_dir og skrive ut navnet på filene.

foreach ($ fil i get -childitem -recurse -path/home/viktor/desktop/sample_dir)

ekko $ fil

Kjør koden.

$ ./foreach-loop.PS1

Her, cmdlet Get-Childitem Får varene over det beskrevne stedet. Flagget “-Path” beskriver hvilken katalog som skal se nærmere på. Hvis det er flere nivåer av underkataloger, vil det å bruke "-Recurse" få alle barneartiklene rekursivt. Hvis du vil komme tilbake til en viss dybde, kan du også bruke parameteren "-dybde". Sjekk ut mer om Get-Childitem.

Vi kan også finjustere koden for å søke etter bare spesifikke filutvidelser.

foreach ($ fil i get -childitem -recurse -path/home/viktor/desktop/sample_dir/*.tekst)

ekko $ fil

Foreach over CSV
En CSV -fil er en tekstdatabase med verdier, hver verdi atskilt med en avgrensning (komma, for det meste). Det er en enkel, men effektiv struktur for å lagre strukturerte data i tekstformat. CSV -formatet brukes av forskjellige applikasjoner og databasemotorer for enkelhets skyld og brukervennlighet.

Vi kan bruke foreach -sløyfen til å jobbe med individuelle verdier av en CSV -fil og iverksette tiltak deretter. Følgende eksempel gjør nettopp det.

$ verdier = (Get Content/Home/Viktor/Sample.CSV) [0].dele(",")
foreach ($ verdi i $ verdier)
ekko $ verdi

Foreach -metoden
Frem til nå har vi sett foreach -sløyfen i aksjon, ikke sant? I PowerShell vises det også som foreach () -metoden. Med utgangspunkt i PowerShell v4 eksisterer denne metoden på matriser eller samlinger av objekter. Metoden har en standard skriptblokk som parameter som inneholder handlingene å gjøre for hver iterasjon.

La oss se på foreach () -metoden i aksjon. Først må du lage et eksempel på matrise.

$ tall = (2,4,8,16,32,64,128,256,512)

Nå kan vi kalle metoden og beskrive en enkel ekkokommando per iterasjon.

$ tall.For hver(
ekko $ _
)

Foreach-objekt
Foreach -sløyfen kan også direkte fungere med objekter. For å gjøre det, er det en dedikert cmdlet som heter foreach-object. Det tar et objekt som inngang og itererer gjennom elementene.

I neste eksempel søker vi gjennom en spesifikk katalog etter ".txt ”-filer og bruk for e-objekt til å handle basert på hvert element i søkeresultatet.

$ navn = Get -ChildItem -Recurse/Home/Viktor/Desktop/Sample_Dir/*.tekst
$ navn |
Foreach-object
ekko $ _

Som du kan se, er kjernestrukturen til foreach-objekt ganske lik. Den eneste forskjellen er at du kan passere objektet ved hjelp av rør.

Siste tanker

Foreach Loop in PowerShell er en enkel, men effektiv og kraftig sløyfe. Den kan fungere basert på objekter, matriser eller individuelle elementer. Denne guiden demonstrerer noen av de vanlige implementeringene av foreach -sløyfen.

Foruten foreach -sløyfen, støtter PowerShell andre standardløkker, som for en løkke. Sjekk ut denne guiden for Loop in PowerShell.

Glad databehandling!