Shell Scripting - For Loops
Innholdsfortegnelse:
- Standard Bash For Loop
- Sløyfe over strengene
- Sløyfe over et tallområde
- Sløyfe over utvalgselementer
- C-stil Bash for loop
- Bryt og fortsett uttalelser
- Brudderklæring
- Fortsett uttalelse
- Bash For Loop-eksempler
- Gi nytt navn til filer med mellomrom i filnavnet
- Endre filtypen
- Konklusjon
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 erdone
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 terminalMicrosoft Research Asia Hosts Gates på 10 år Bash

Microsoft Research Asia har vokst fra et dusin mennesker i 1998 til over 350 et tiår senere.
Slik kjører du Bash på Ubuntu på Windows 10

Aktivering av Windows Subsystem for Linux vil tillate deg å kjøre Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandolinjeverktøy, Linux-første verktøy.
Htc one x: løse boot loop-problemet mens du installerer tilpassede rom

Lær hvordan du løser Boot Loop-problemet mens du installerer tilpassede ROM-er på HTC One X.