BASH-programmering

Nested Loop in Bash Script Eksempler

Nested Loop in Bash Script Eksempler

I programmering eller skripting er sløyfen et av de mest grunnleggende og kraftige konseptene. En sløyfe utfører visse oppgaver til de angitte vilkårene er oppfylt. Hvert programmerings- eller skriptspråk har forskjellige måter å implementere konseptet på.

I denne guiden, sjekk ut den nestede sløyfen i bash scripting.

Nestet løkke

En sløyfe, per definisjon, utfører visse oppgaver til vilkårene er oppfylt. Hva om oppgaven inkluderer å kjøre en løkke? Dette er konseptet med en nestet løkke. En løkke i en løkke.

Dette er den grunnleggende strukturen til en sløyfe.

mens (tilstand)
# noe

Her vil mens loop fortsette å utføre oppgavene som er erklært inne i blokken så lenge betingelsen er oppfylt. I tilfelle en nestet mens sløyfe, vil strukturen se slik ut.

# hovedsløyfe
mens (tilstand)
# nestet løkke
mens (tilstand)
# noe

I teorien kan nestede løkker gå til uendelig dybde. I mange situasjoner kan nestede løkker være den perfekte løsningen.

Loop i bash script

Bash er et kraftig skriptspråk. Det er forskjellige sløyfestrukturer i bash. De mest populære er for, mens og til løkker. Hvis du er kjent med C / C ++ programmering før, vil syntaksen definitivt se ganske like ut.

For løkker

For loop er en av de vanligste og mest allsidige formutgangene osv. Strukturen til sløyfer i bash scripting. Strukturen ligner også mye på loop i C / C ++.

Strukturen på for loop in bash er som følger.

for ((initialisere; tilstand; økning)); gjøre
# noe
ferdig

Strukturen er veldig selvforklarende. Initialiseringsdelen er ikke obligatorisk. Imidlertid er tilstanden og økningen høyere prioritert.

La oss sette det i verk. Her er et veldig forenklet bash-skript som implementeres for loop.

for ((i = 0; i < 5 ; i++)); do
ekko "hei verden"
ferdig

Det er også mulig å bruke liste / område som løkkebetingelse. Det er spesielt nyttig hvis du arbeider med en liste over filer, antall områder, matriser, kommandoutganger osv. Strukturen ser omtrent slik ut.

for vare i ; gjøre
# noe
ferdig

For eksempel vil følgende skript skrive ut “hei verden” fem ganger.

for jeg i 1… 5; gjøre
ekko "hei verden"
ferdig

Hva om vi trenger å jobbe med innholdet i en katalog? I det følgende eksemplet vil skriptet skrive ut alle filene i / usr / bin-katalogen.

for i i / usr / bin / *; gjøre
ekko $ i
ferdig

Nå, hva gjør vi for å ha en nestet for loop? Det er bare en for løkke inne i en annen. Her er en nestet for loop ved hjelp av forrige eksempel.

for ((i = 0; i < 3 ; i++)); do
for ((j = 0; j < 2 ; j++)); do
ekko "hei verden"
ferdig
ferdig

Produksjonen vil være “hei verden” 6 ganger. Den ytre sløyfen vil kjøre tre ganger, og kjøre den indre sløyfen to ganger.

Mens løkker

Mens loop er en annen populær og intuitiv sløyfe tilgjengelig i bash scripting. Syntaksen ser slik ut.

samtidig som ; gjøre
# noe
ferdig

I det følgende eksemplet vil manuset skrive ut “hei verden” fem ganger.

num = 1
mens [$ num -le 5]; gjøre
ekko "hei verden"
num = $ (($ num + 1))
ferdig

Hvordan ville det se ut å ha en nestet mens løkke? Her er et enkelt eksempel.

num_a = 1
num_b = 1
mens [$ num_a -le 5]; gjøre
mens [$ num_b -le 5]; gjøre
ekko "hei verden"
num_b = $ (($ num_b + 1))
ferdig
num_a = $ (($ num_a + 1))
ferdig

Inntil løkker

Hvis du har en programmeringsbakgrunn i C / C ++, er du kjent med gjør-mens-sløyfen. Dessverre har bash ikke noe sånt. Imidlertid inntil løkken fungerer på en lignende måte. Syntaksen ser også ganske likt ut.

før [ ]; gjøre
# noe
ferdig

Forskjellen mellom mens og til løkken er testtilstanden. Så lenge testtilstanden er oppfylt, fortsetter en stund-løkke. En til-løkke vil imidlertid fortsette å kjøre bare hvis tilstanden er falsk.

Her er et raskt eksempel på mens løkken. Det vil trykke multiplikasjonstabellen på 2.

num_a = 1
til [$ num_a -gt 10]; gjøre
ekko $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
ferdig

Loop break

I visse situasjoner, hvis visse vilkår er oppfylt, blir det å kjøre resten av løkken overflødig. Loop break er en interessant funksjon som gjør det mulig å bryte ut av loop i en gitt tilstand. Det er viktigere for nestede sløyfer ettersom jo høyere sløyfene er, desto mer ressursforbruk og ineffektivitet.

Her vil følgende for loop slutte å kjøre så snart den når tilstanden.

for ((i = 1; i<=100;i++)); do
ekko $ i
hvis [$ i -eq 10]; deretter
gå i stykker
fi
ferdig

Sjekk ut hvordan du kan bryte mens du har en detaljert forklaring og demonstrasjon av loopbryter.

Siste tanker

En nestet løkke er et enkelt og kraftig konsept å forstå og implementere. Forhåpentligvis klarte denne guiden å beskrive og demonstrere konseptet.

Interessert i flere bash-skriptveiledninger? Ta en titt på følgende guider.

  • Bash uendelig løkke
  • Brukerinngang fra Bash-skript
  • Bash-funksjon returnerer matrise

Glad databehandling!

Mus Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Hvis du finner ut at musemarkøren hopper eller beveger seg alene, automatisk, tilfeldig mens du skriver inn Windows-bærbar PC eller datamaskin, kan no...
Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...
Mus Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Hvordan endre musepekeren og markørstørrelse, farge og skjema på Windows 10
Musepekeren og markøren i Windows 10 er veldig viktige aspekter ved operativsystemet. Dette kan sies også for andre operativsystemer, så i sannhet er ...