Bruke "til"-løkke i et Bash-skript for å gå over kommando(er).
Bash (Bourne Again Shell) er en shell-ledetekst og skriptspråk i GNU/Linux-operativsystemer. Det er standardskallet for de fleste Linux-distribusjoner.
Som de fleste skriptspråk, tilbyr Bash loop-syntakser for å gjenta lignende oppgaver flere ganger. I denne artikkelen lærer vi hvordan du bruker før
loop i Bash.
Introduksjon
De før
loop in Bash brukes til å utføre kommando(er) (utførte kommandoer) flere ganger basert på utdata fra en annen kommando(er) (tilstandskommandoer). De utførte kommandoene vil fortsette å kjøre til condition-kommandoen fortsetter å mislykkes (dvs. returnerer en status som ikke er null. Enhver kommando i Linux returnerer 0 for suksess og et heltall som ikke er null for feil). Dette er stikk motsatt av samtidig som
loop, der de utførte kommandoene fortsetter å kjøre til tilstandskommandoen er vellykket.
Hvis det er flere betingelseskommandoer, vurderer setningen bare statusen til den siste kommandoen i listen, dvs. løkken vil kjøre til den siste kommandoen i listen fortsetter å mislykkes.
Generell syntaks
Den generelle syntaksen for før
loop i Bash er:
til du er ferdig
Utfør kommandolisten vil kjøre til den siste kommandoen i tilstandskommandolisten mislykkes. Når den siste kommandoen er vellykket, avsluttes loopen.
Brukere kan spesifisere hvilken som helst kjørbar fil i kommandolistene. Det kan være standard Linux-programmer eller tilpassede brukerprogrammer eller skript. Hver kommando skal enten være på en ny linje eller atskilt med et semikolon på samme linje.
La oss se noen eksempler.
Looping til en variabel har en bestemt verdi: Følgende løkke kjøres til verdien av variabelen x
er 10.
x=0 til [[ $x -eq 10 ]] gjør ekko $x ((x++)) ferdig
I hver iterasjon sjekker vi om verdien av x er 10. Verdien sjekkes ved å bruke test
kommando. [[ Uttrykk ]]
er syntaksen for testkommando (se mann test
).
Så inne i gjør...ferdig
blokk, skriver vi bare ut verdien av x, og øker den. Sløyfen avsluttes når betingelseskommandoen er vellykket, dvs. når $x
er lik 10
.
Merk: Indeksvariabelen som skal brukes i 'til'-løkken skal initialiseres enten før 'til'-løkken eller i betingelseskommandoene, i motsetning til for loop, som gjør det mulig å initialisere en variabel implisitt.
Med flere betingelseskommandoer: Følgende sløyfe oppretter 5 navngitte kataloger dir0, dir1, ... dir4
.
z=0 til ekko "Hei" ekko "Bye" [[ $z -eq 5 ]] gjør ekko "Oppretter dir$z..." mkdir dir$z ((z++)) ferdig
De første kommandoene ekko "Hei" og ekko "Bye" vil utføres én gang fullstendig; deres suksess eller fiasko har ingen som helst innvirkning på hvor lenge sløyfen vil løpe.
Deretter vil testkommandoen for å kontrollere verdien av variabel z utføres. Inntil denne kommandoen fortsetter å mislykkes, dvs. til verdien av z er 5, fortsetter betingelseskommandoene og de utførte kommandoene å kjøre i rekkefølge. Her, for hver iterasjon, vil den først kjøre de 2 ekkokommandoene i tilstand og deretter sjekker den tredje betingelseskommandoen for verdien av z. Hvis den ikke er 5, går den inn i loopen og utfører de gitte kommandoene.
Bryt og fortsett
Pauseerklæring for betinget utgang
Vi kan også bruke vilkårserklæringen hvis
inne i løkken. De hvis
uttalelse kan brukes med en gå i stykker
en uttalelse, for en betinget utgang fra loopen.
x=0 til [[ $x -eq 10 ]] gjør hvis [[ $x -eq 5 ]] bryte fi ekko $x ((x++)) ferdig
Ovennevnte inntil-løkke vil skrive ut tall fra 0 til 4. Når verdien av i er 5, vil den bryte ut av løkken. Dette er spesielt nyttig når en sløyfe skal avsluttes når en kommando gir en bestemt utgang.
Fortsett utsagn for å hoppe over en gjentakelse betinget
Bash har også en Fortsette
setning for å hoppe over gjenværende del av en iterasjon i en loop hvis en bestemt betingelse er oppfylt.
x=0 til [[ $x -eq 10 ]] gjør hvis [[ $x -eq 5 ]] fortsett fi echo $x ((x++)) done
Ovennevnte løkke vil skrive ut tall fra 0 til 10, bortsett fra 5, fordi under iterasjonen av x=5
det er en continue-setning, som vil hoppe over resten av koden i løkken i starten med iterasjonen av x=6
.
Bruke løkker: Skript og kommandolinje
Løkkesyntaksene kan brukes i Bash shell direkte eller fra en kjørbar shell script-fil. Lik til
og samtidig som
løkker, en gang en før
løkkesyntaks legges inn på skallet, fortsetter skallet ledeteksten for å la brukeren fortsette kommandoene som skal løkkes.
Ellers kan brukeren lagre dette i en skriptfil og kjøre skriptfilen.
De #!/bin/bash
ved starten spesifiserer tolken som skal brukes når filen kjøres. Selv om Bash er det mest brukte skallet i dag, foretrekker noen brukere skall som zsh
, som bør spesifiseres i stedet for bash i starten av denne filen.
For å gi utførelsestillatelser for denne filen, kjør:
chmod +x test.sh
Til slutt, for å kjøre filen, løpe:
./test.sh
Konklusjon
De før
loop er en annen viktig funksjon i Bash-skripting. Det er spesielt viktig i komplekse skript når et visst sett med programmer forventes å returnere feilstatus, og noen andre kommando(er) skal utføres for å logge feilen, vise feil i detalj eller ganske enkelt utføre noen alternative programmer.