Det er to typer bash for looper tilgjengelig. En ved å bruke «i» keyword med liste over verdier, en annen ved hjelp av C-programmering som syntaks.
Denne artikkelen er en del av vår pågående bash tutorial-serien.
Dette forklarer både av bash-for-løkke metoder, og gir 12 ulike eksempler på hvordan du bruker bash-for-løkke i shell-skript.
Bokmerke denne artikkelen for fremtidig referanse, da dette er den eneste artikkelen du noensinne ville trenge å se på hvordan du bruker bash for looper med eksempler.,
Metode 1: Bash-For-Løkke ved å bruke «i» og liste over verdier
Syntaks:
for varname in listdo command1 command2 ..done
I over syntaks:
- for, i, gjør og har gjort er nøkkelord
- «liste» inneholder en liste over verdier. Listen kan være en variabel som inneholder flere ord adskilt med mellomrom. Hvis listen er mangler i for-setningen, så det tar posisjonelle parameteren som ble vedtatt i skallet.
- varname er alle Bash-variabelnavn.
I denne formen for uttalelse utfører kommandoer innelukket i en kropp, en gang for hvert element i listen., For eksempel, hvis verdiene inneholder 5 elementer, for-løkke vil bli utført totalt 5 ganger, én gang for hvert element i listen. Gjeldende element fra listen, vil bli lagret i en variabel «varname» hver gang gjennom løkken. Denne «varname» kan bli behandlet i kroppen av for-løkke.
Metode 2: Bash-For-Løkke ved hjelp av C som syntaks
Den andre form av for-løkke er lik den for-løkke i «C» programmeringsspråk, som har tre uttrykk (initialisering, tilstand og updation).,
for (( expr1; expr2; expr3 ))do command1 command2 ..done
I over bash for kommandosyntaksen
- Før den første iterasjon, expr1 er evaluert. Dette er vanligvis brukt til å initialisere variabler for-løkke.
- Alle utsagnene mellom do og gjort, er utført gjentatte ganger til verdien av expr2 er SANT.
- Etter hver iterasjon av loopen, expr3 er evaluert. Dette brukes vanligvis for å øke en løkke teller.
følgende 12 eksempler viser hvordan bash for sløyfer i forskjellige måter.,
Statiske verdier for listen etter «i» søkeord
I eksempelet nedenfor er listen over verdier (Man, Tir, Ons, Tors og Fre) er direkte gitt etter søkeordet «i» i bash-for-løkke.
merk: listen over verdier ikke bør være atskilt med komma (Man, Tir, Ons, Tor, Fre). Kommaet vil bli behandlet som en del av verdien. jeg har.e i Stedet for «Man», det vil bruke «Man» som verdi, som vist i eksempelet nedenfor.
merk: listen over verdier bør ikke stå i doble anførselstegn. («Mon Tue Wed Thu Fri»)., Hvis du setter i doble anførselstegn, vil den bli behandlet som en enkelt verdi (i stedet for 5 forskjellige verdier), som vist i eksemplet nedenfor.
$ cat for1-wrong2.shi=1for day in "Mon Tue Wed Thu Fri"do echo "Weekday $((i++)) : $day"done$ ./for1-wrong2.shWeekday 1 : Mon Tue Wed Thu Fri
Variabel-listen etter «i» søkeord
i Stedet for å gi verdiene direkte i for-løkke, kan du lagre verdier i en variabel, og bruke variabelen i for-løkke etter «i» søkeord, som vist i følgende eksempel.
Advarsel: Som en beste praksis, bør du alltid sitat bash variabler når du refererer det. Det er noen unntak til denne best-praksis-regel. Dette er en av dem., Hvis du dobbeltklikker sitat variabelen i denne for-løkke, verdiene vil bli behandlet som enkelt verdi. Mange mennesker faller i denne fellen. Vær forsiktig og ikke dobbel sitat variabelen i for-løkke.
ikke angi listen; få det fra stedsbestemt parametere
Hvis du ikke angi søkeordet «i», etterfulgt av en liste over verdier i bash-for-løkke, vil den bruke den posisjonelle parametre (som jeg.e argumentene som sendes til shell-script).
Advarsel: Vær forsiktig hvis du bruker denne metoden. Du bør ikke inkluderer søkeordet «i» i for-løkke., Hvis du lar søkeordet «i», uten noen verdier, det vil ikke bruke stedsbestemt parameter som vist nedenfor. Det vil ikke gå inne i loopen. jeg har.e for-løkke vil aldri få utføres som vist i eksemplet nedenfor.
$ cat for3-wrong.shi=1for day indo echo "Weekday $((i++)) : $day"done$ ./for3-wrong.sh Mon Tue Wed Thu Fri
Merk: Se vår tidligere artikkel for å forstå mer om bash stedsbestemt parametere.
Unix-kommando ut som liste verdier etter «i» søkeord
Du kan bruke resultatet av en UNIX / Linux-kommando som liste av verdier til for-løkke ved å kapsle inn kommandoen i back-flått ` ` som vist nedenfor.,
bla gjennom filer og mapper i en for-løkke
for Å bla gjennom filer og kataloger under en bestemt katalog, bare cd-en til som katalog, og gi * i for-løkke, som vist nedenfor.
følgende eksempel vil bla gjennom alle filer og kataloger under hjemmekatalogen.
Bruk av * i bash-for-løkke er lik filen globbing som vi bruker i linux command line når vi bruker ls-kommandoen (og andre kommandoer).
For eksempel, følgende vil vise alle filer og kataloger under hjemmekatalogen., Dette er det begrepet som er brukt i over for5.sh eksempel.
cd ~ls *
følgende vil vise alle *.conf-fil som begynner med enten a, b eller c eller d under /etc-katalogen.
$ ls -1 /etc/*.conf/etc/asound.conf/etc/autofs_ldap_auth.conf/etc/cas.conf/etc/cgconfig.conf/etc/cgrules.conf/etc/dracut.conf
Det samme argumentet som brukes i ls-kommandoen ovenfor, kan brukes i et bash-for-løkke, som vist i eksemplet nedenfor.
Bryte ut av for-løkke
Du kan bryte ut av en for-løkke ved hjelp av ‘bryte’ – kommandoen som vist nedenfor.,
$ cat for6.shi=1for day in Mon Tue Wed Thu Frido echo "Weekday $((i++)) : $day" if ; then break; fidone$ ./for6.shWeekday 1 : MonWeekday 2 : Tue
Fortsett fra toppen av for-løkke
Under visse betingelser, kan du ignorere resten av kommandoene i for-løkke og fortsette løkken fra toppen igjen (for de neste verdi i listen), fortsette å bruke kommandoen som vist nedenfor.
følgende eksempel legger til «(HELG)» å Lør og Søn, og «(hverdager)» til resten av dagene.
Bash-for-løkke ved hjelp av C-program syntaks
Dette eksemplet bruker den 2. metode for bash-for-løkke, som er lik C for-løkke syntaks., Følgende eksempel genererer 5 tilfeldige tall ved hjelp av bash-C-stil for-løkke.
9. Uendelig Bash-for-løkke
Når du ikke gi start, betingelse, og tilvekst i bash-C-stil for-løkke, vil det bli uendelig løkke. Du må trykke Ctrl-C for å avslutte loopen.
$ cat for9.shi=1;for (( ; ; ))do sleep $i echo "Number: $((i++))"done
Som vi sa ovenfor, trykker du Ctrl-C for å bryte ut av denne bash uendelig for-løkke eksempel.,
$ ./for9.shNumber: 1Number: 2Number: 3
Bruke komma i bash-C-stil for-løkke
I bash-c-stil loop, bortsett fra økning verdien som er brukt i den tilstand, kan du også tilvekst noen annen verdi som vist nedenfor.
I initialize-delen, og økningen delen av bash-C-stil for-løkke, du kan ha flere verdier ved å skille med komma, som vist nedenfor.
følgende for-løkke er utført totalt 5 ganger, ved hjelp av variabelen jeg. Men variabel j start med 5, og komme øker med 5 hver gang loopen blir utført.,
$ cat for10.shfor ((i=1, j=10; i <= 5 ; i++, j=j+5))do echo "Number $i: $j"done$ ./for10.shNumber 1: 10Number 2: 15Number 3: 20Number 4: 25Number 5: 30
Spekter av tall etter «i» søkeord
Du kan sløyfe gjennom å bruke rekkevidde av tall i for-løkke «i» bruke brace expansion.
følgende eksempel looper gjennom 10 ganger ved å bruke verdiene 1 til 10.
$ cat for11.shfor num in {1..10}do echo "Number: $num"done$ ./for11.shNumber: 1Number: 2Number: 3Number: 4Number: 5...
Rekkevidde av tall med intervaller etter «i» søkeord
følgende eksempel looper gjennom 5 ganger med verdiene 1 til 10, med en økning på 2. jeg har.e Det starter med 1, og holder økes med 2, til den når 10.,
$ cat for12.shfor num in {1..10..2}do echo "Number: $num"done$ ./for12.shNumber: 1Number: 3Number: 5Number: 7Number: 9
PS: ikke glem å bokmerke denne artikkelen for fremtidig referanse.
Hvis du likte denne artikkelen, du kan også liker..
|
|