Android

Bash for loop

Shell Scripting - For Loops

Shell Scripting - For Loops

Innholdsfortegnelse:

Anonim

Looper er et av de grunnleggende konseptene for programmeringsspråk. Looper er nyttige når du vil kjøre en serie kommandoer om og om igjen til en viss tilstand er nådd.

I skriptspråk som Bash er løkker nyttige for å automatisere repeterende oppgaver.

Det er tre grunnleggende loopkonstruksjoner i Bash-scripting, for loop, while loop og til loop.

I denne opplæringen vil vi dekke det grunnleggende om for løkker i Bash. Vi vil også vise deg hvordan du bruker bruddet og fortsetter utsagn for å endre strømmen i en loop.

Standard Bash For Loop

For-loop-iterater over en liste over elementer og utfører det gitte sett med kommandoer.

Bash for loop har følgende form:

for item in do done

Listen kan være en serie med strenger atskilt med mellomrom, et antall tall, utdata fra en kommando, en matrise og så videre.

Sløyfe over strengene

I eksemplet nedenfor vil loopen iterere over hvert element i listen over strenger, og det variable element blir satt til gjeldende element.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

Sløyfen gir følgende utdata:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Sløyfe over et tallområde

Du kan bruke sekvensuttrykket til å spesifisere et område med tall eller tegn ved å definere et start og sluttpunkt for området. Sekvensuttrykket har følgende form:

{START..END}

I eksemplet nedenfor vil loopen iterere gjennom alle tall fra 0 til 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

Med utgangspunkt i Bash 4, er det også mulig å spesifisere et trinn når du bruker områder. Uttrykket har følgende form:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Sløyfe over utvalgselementer

Du kan også bruke for-loopen til å iterere over en rekke elementer:

I eksemplet nedenfor definerer vi en matrise BOOKS og itererer over hvert element i matrisen.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

C-stil Bash for loop

Syntaksen til C-stil for loop har følgende form:

for ((INITIALIZATION; TEST; STEP)) do done

INITIALIZATION delen utføres bare en gang når løkken starter. Deretter evalueres TEST delen. Hvis den er falsk, avsluttes for-loopen. Hvis TEST er sann, blir kommandoer i kroppen til for loop utført og STEP delen blir oppdatert.

I den følgende koden, stjerner loopen ved å initialisere i = 0 , og før hver iterasjon sjekker om i ≤ 10 . Hvis det er sant, skriver det ut gjeldende verdi på i og i med 1 ( i++ ) ellers slutter sløyfen.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

Sløyfen vil iteres 1001 ganger og gi følgende utdata:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Bryt og fortsett uttalelser

Brudd- og fortsettelsesuttalelsene kan brukes til å kontrollere kjøringen for sløyfen.

Brudderklæring

Brudduttalelsen avslutter gjeldende sløyfe og overfører programkontrollen til utsagnet som følger den avsluttede uttalelsen. Det brukes vanligvis til å avslutte løkken når en viss betingelse er oppfylt.

I det følgende eksemplet bruker vi if-setningen for å avslutte kjøringen av løkken når det nåværende itererte elementet er lik 'Litium'.

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium All Done!

Fortsett uttalelse

Fortsettelsesuttalelsen går ut av den nåværende iterasjonen av en sløyfe og gir programkontrollen til neste iterasjon av løkken.

I det følgende eksemplet itererer vi oss gjennom et antall tall, og når det nåværende itererte elementet er lik '2', vil fortsettelsesuttalelsen føre til at kjøringen går tilbake til begynnelsen av loopen og fortsetter med neste iterasjon.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Bash For Loop-eksempler

Gi nytt navn til filer med mellomrom i filnavnet

Følgende eksempel viser hvordan du bruker Bash for loop til å gi nytt navn til alle filene i den gjeldende katalogen med et mellomrom i navnene ved å bytte ut plass til understrek.

for file in *\ *; do mv "$file" "${file// /_}" done

La oss dele koden linje for linje:

  • Den første linjen oppretter en for loop og iterates gjennom en liste over alle filer med et mellomrom i navnet. Uttrykket *\ * oppretter listen. Den andre linjen gjelder for hvert element i listen og flytter filen til en ny og erstatter plassen med en understrekning ( _ ). Delen ${file// /_} bruker shell-parameterutvidelsen til å erstatte et mønster i en parameter med en streng. done indikerer slutten på sløyfesegmentet.

Endre filtypen

Følgende eksempel viser hvordan du bruker Bash for loop for å gi nytt navn til alle filer som slutter med.jpeg i den gjeldende katalogen ved å erstatte filtypen fra.jpeg til.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

La oss analysere koden linje for linje:

  • Den første linjen oppretter en for loop og iteres gjennom en liste over alle filer som slutter med '.jpeg'. Den andre linjen gjelder hvert element på listen og flytter filen til en ny som erstatter '.jpeg' med '.jpg'. ${file%.jpeg} å fjerne '.jpeg' -delen fra filnavnet ved bruk av shell-parameterutvidelsen som er done indikerer slutten på loop-segmentet.

Konklusjon

Nå skal du ha en god forståelse av hvordan du bruker bash til sløyfe for å itereere gjennom lister.

bash loop terminal