Bash 'Inntil' Loop: Opplæring og eksempler

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.