Bash 'hvis annet'-uttalelse: Opplæring og eksempler

Bruke if…else-setningen i Bash for betinget kodekjøring.

Bash (Bourne Again Shell) er en shell-ledetekst og skriptspråk i GNU/Linux-operativsystemer. Det er standardskallet for de fleste Linux-distribusjoner.

Betingede utsagn er avgjørende i alle programmeringsspråk, kompilert så vel som skriptet. De lar brukeren utføre et stykke kode basert på en forhåndsdefinert betingelse, som er et av grunnlaget for programmeringslogikk. I denne artikkelen lærer vi hvordan du bruker hvis ... annet betinget uttalelse i Bash.

Introduksjon

De hvis ... annet statement i Bash lar brukeren manipulere strømmen av kode basert på forhold. Brukeren kan spesifisere separate kodeblokker som skal utføres, hvorav bare én til slutt vil bli utført under kjøring, basert på den tilsvarende betingelsen som er oppfylt.

Merk at det kan spesifiseres mer enn to forhold, for hvilke elif uttalelse kan brukes. Brukeren kan angi et hvilket som helst antall forhold ved å bruke elif, og til slutt en standardbetingelse som bruker ellers blokkere. La oss se mer om dette i syntaksen og eksemplene nedenfor.

Generell syntaks

Den generelle syntaksen for hvis ... annet uttalelse i Bash er:

hvis da  ellers  fi

Her, hvis tilfredsstiller, dvs. hvis den returnerer 0 (suksess), blir kodeblokk 1 utført. Hvis tilstanden ikke returnerer 0, dvs. den returnerer en feilstatus, blir kodeblokken 2 utført. De hvis ... annet blokken slutter med en fi uttalelse.

For flere blokker som tilsvarer flere forhold,elif benyttes:

hvis da  elif da  elif da  ... ... annet  fi

Her kontrolleres betingelsene i rekkefølge og kodeblokken til den første betingelsen som returnerer status 0 (suksess) utføres. F.eks. hvis returnerer ikke null status (feil), deretter er sjekket. Hvis returnerer status 0, er henrettet. Etter dette kontrolleres ikke ytterligere betingelser og kodeutførelsen fortsetter til koden etter fi uttalelse.

Hvis ingen av betingelsene returnerer status 0, i den andre blokken utføres. Merk at den andre blokken er valgfri. Hvis ingen betingelse er oppfylt, samt nei ellers blokken er spesifisert, ingen betinget kodeblokk vil kjøre, og kjøring av kode vil fortsette til koden etter fi uttalelse, som vist i flytdiagrammet nedenfor.

Merk at deretter uttalelsen skal kun brukes etter hvis og elif uttalelser og ikke påkrevd etter ellers uttalelse.

Eksempler

For å utføre en kodeblokk hvis en variabel har en spesiell verdi:

x=0 hvis [ $x -eq 0 ] deretter ekko "Verdi av X er 0" ellers ekko "Verdi av X er ikke 0" fi

For å se etter flere verdier:

x=2 hvis [ $x -eq 0 ] deretter ekko "Verdi av X er 0" elif [ $x -eq 1 ] deretter ekko "Verdi av X er 1" elif [ $x -eq 2 ] deretter ekko "Verdi av X er 2" ellers ekko "Verdien av X er ikke 0" fi

Betingelsene kan være alle Linux-kommandoer. Den tilsvarende kodeblokken vil utføres hvis kommandoen kjører vellykket.

hvis npm -v så ekko "NPM tilstede i systemet" ellers sudo apt installer npm fi

I eksemplet ovenfor, siden npm ikke ble installert i systemet, kommandoen npm -v returnerte en status som ikke er null. Derfor gikk kodekjøringen inn i ellers blokk, hvor vi installerer npm ved hjelp av apt pakkeansvarlig. Som vi kan se, ba det meg om å skrive inn passordet og begynte installasjonen av npm.

Vi kan også hekke en annen hvis ... annet blokk inne i en hvis, ellers eller elif blokkere:

x=0 y=1 if [ $x -eq 0 ] then echo "X is 0" if [ $y -eq 1 ] then echo "Y is 1" else echo "Y is not 1" fi else echo "X is ikke 0" fi

Dette er nyttig når et eget sett med betingelser skal kontrolleres når en startbetingelse er oppfylt.

For eksempel prøver følgende kode å installere en webserverprogramvare:

hvis nginx -v så ekko "NGINX er allerede installert." ellers hvis sudo apt installer nginx, så ekko "NGINX-installasjonen vellykket." elif sudo apt installer apache2 og deretter ekko "APACHE2 installering vellykket." else echo "Kan ikke installere noen webprogramvare." fi

Koden sjekker først om Nginx allerede er installert i systemet. Hvis det er det, viser den bare en melding og avslutter. Hvis den ikke er det, prøver den å installere Nginx.

Hvis Nginx av en eller annen grunn ikke kunne installeres i systemet fra pakken, prøver den å installere Apache2. Hvis til og med Apache2 gir feil under installasjonen, avsluttes den og viser en melding om at ingen programvare kunne installeres.

På lignende måte kan en nestet blokk brukes inne i en elif blokkere også.

Utfører hvis ... annet: Skript og kommandolinje

I likhet med hvilken som helst Bash-kode, er hvis ... annet statement kan brukes i Bash shell direkte eller fra en kjørbar shell script fil. Når Bash-tolken finner en hvis, ellers eller elif setningen, fortsetter den skallet for å la brukeren gå inn i kodeblokken.

Brukeren kan også lagre denne koden 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 skjell som zsh, som bør spesifiseres i stedet for bash i starten av denne filen.

For å gi utføringstillatelser for denne filen, kjør:

chmod +x test.sh

Til slutt, for å kjøre filen, kjør:

./test.sh

Konklusjon

I likhet med alle programmeringsspråk, hvis ... annet uttalelse er et grunnleggende trekk ved Bash. Å lære bruken av den går langt i å skrive grunnleggende så vel som avanserte skript.