Bash 'if else' Izjava: Tutorial i primjeri

Korištenje if...else izraza u Bashu za uvjetno izvršavanje koda.

Bash (Bourne Again Shell) je naredbeni redak ljuske i skriptni jezik u GNU/Linux operativnim sustavima. To je zadana ljuska za većinu Linux distribucija.

Uvjetni izrazi su od vitalnog značaja u svakom programskom jeziku, kompajlirani kao i skriptirani. Oni dopuštaju korisniku da izvrši dio koda na temelju unaprijed definiranog uvjeta, što je jedan od temelja programske logike. U ovom članku ćemo naučiti kako koristiti ako... inače uvjetna izjava u Bashu.

Uvod

The ako... inače izjava u Bashu omogućuje korisniku da manipulira tijekom koda na temelju uvjeta. Korisnik može odrediti zasebne blokove koda koji će se izvršavati, od kojih će se samo jedan konačno izvršiti tijekom izvođenja, na temelju odgovarajućeg uvjeta koji je zadovoljen.

Imajte na umu da se može navesti više od dva uvjeta, za koje elif izjava se može koristiti. Korisnik može dati bilo koji broj uvjeta koristeći elif, i konačno zadani uvjet pomoću drugo blok. Pogledajmo više o tome u sintaksi i primjerima u nastavku.

Opća sintaksa

Opća sintaksa za ako... inače izjava u Bashu je:

ako tada  drugo  fi

Ovdje, ako je zadovoljava, tj. ako vrati 0 (uspjeh), tada se izvršava blok koda 1. Ako uvjet ne vrati 0, tj. vraća status neuspjeha, tada se izvršava blok koda 2. The ako... inače blok završava s a fi izjava.

Za više blokova koji odgovaraju višestrukim uvjetima,elif koristi se:

ako tada  elif onda  elif onda  ... ... ostalo  fi

Ovdje se uvjeti provjeravaju redom i izvršava se blok koda prvog uvjeta koji vraća status 0 (uspjeh). Npr. ako onda vraća status koji nije nula (neuspjeh). provjerava se. Ako vraća status 0, se izvršava. Nakon toga se daljnji uvjeti ne provjeravaju i izvršavanje koda se nastavlja na kod nakon fi izjava.

Ako nijedan od uvjeta ne vrati status 0, u else blok se izvršava. Imajte na umu da je blok else neobavezan. Ako niti jedan uvjet nije zadovoljen, kao i br drugo blok je naveden, neće se pokrenuti nikakav uvjetni blok koda, a izvršavanje koda nastavit će se s kodom nakon fi izjavu, kao što je prikazano u donjem dijagramu toka.

Imajte na umu da je zatim izjava se koristi tek nakon ako i elif izjave i nisu potrebne nakon drugo izjava.

Primjeri

Za izvođenje kodnog bloka ako varijabla ima određenu vrijednost:

x=0 ako [ $x -eq 0 ] onda echo "Vrijednost X je 0" inače echo "Vrijednost X nije 0" fi

Za provjeru više vrijednosti:

x=2 ako [ $x -eq 0 ] onda echo "Vrijednost X je 0" elif [ $x -eq 1 ] zatim echo "Vrijednost X je 1" elif [ $x -eq 2 ] zatim echo "Vrijednost X je 2" inače eho "Vrijednost X nije 0" fi

Uvjeti mogu biti bilo koje Linux naredbe. Odgovarajući blok koda će se izvršiti ako se naredba uspješno pokrene.

ako npm -v onda echo "NPM prisutan u sustavu" inače sudo apt install npm fi

U gornjem primjeru, budući da npm nije instaliran u sustav, naredba npm -v vratio status koji nije nula. Stoga je izvršenje koda otišlo u drugo blok, gdje instaliramo npm pomoću prikladan upravitelj paketa. Kao što vidimo, potaknuo me je da unesem lozinku i započeo instalaciju npm-a.

Možemo ugnijezditi i drugu ako... inače blok unutar an ako, drugo ili elif blok:

x=0 y=1 ako [ $x -eq 0 ] onda eho "X je 0" ako [ $y -eq 1 ] onda eho "Y je 1" inače eho "Y nije 1" fi inače eho "X je ne 0" fi

Ovo je korisno kada treba provjeriti odvojeni skup uvjeta nakon što je početni uvjet zadovoljen.

Na primjer, sljedeći kod pokušava instalirati softver web poslužitelja:

ako nginx -v onda echo "NGINX je već instaliran." inače ako sudo apt instalira nginx onda odjekne "instalacija NGINX uspješna." elif sudo apt install apache2 then echo "APACHE2 instalacija uspješna." else echo "Nije moguće instalirati bilo koji web softver." fi

Kod najprije provjerava je li Nginx već instaliran u sustavu. Ako jest, samo prikazuje poruku i izlazi. Ako nije, pokušava instalirati Nginx.

Ako se iz nekog razloga Nginx ne može instalirati u sustav iz paketa, pokušava instalirati Apache2. Ako čak i Apache2 daje pogrešku tijekom instalacije, izlazi s prikazom poruke da se softver ne može instalirati.

Na sličan način, ugniježđeni blok može se koristiti unutar an elif također blok.

Izvršavanje ako... inače: Skripte i naredbeni redak

Slično bilo kojem Bash kodu, ako... inače naredba se može koristiti u Bash ljusci izravno ili iz izvršne datoteke skripte ljuske. Nakon što Bash tumač pronađe an ako, drugo ili elif izraz, nastavlja ljusku kako bi korisniku omogućio da uđe u blok koda.

Korisnik također može spremiti ovaj kod u datoteku skripte i izvršiti datoteku skripte.

The #!/bin/bash na početku određuje interpreter koji će se koristiti kada se datoteka izvršava. Iako je Bash najčešće korištena ljuska u današnje vrijeme, neki korisnici preferiraju ljuske poput zsh, koje treba navesti umjesto bash na početku ove datoteke.

Da biste dali dopuštenja za izvršavanje ove datoteke, pokrenite:

chmod +x test.sh

Konačno, da izvršite datoteku, pokrenite:

./test.sh

Zaključak

Slično bilo kojem programskom jeziku, ako... inače izjava je temeljna značajka Basha. Učenje njegove upotrebe ide dug put u pisanju osnovnih, kao i naprednih skripti.