Kako svladati uvjetnu logiku u Bashu

Kako Svladati Uvjetnu Logiku U Bashu



Korištenje uvjetne logike vrlo je važan dio svakog programskog jezika. Uvjetna logika može se implementirati u Bash na različite načine za rješavanje programskih problema. Metode korištenja uvjetne logike u Bashu kroz različite vrste naredbi 'if' i 'case' za usporedbu niza i numeričkih vrijednosti, provjeru sadržaja varijable, provjeru postojanja datoteke ili direktorija itd. prikazane su u ovom vodiču .

Popis sadržaja:

  1. Upotreba naredbe 'Ako'.
  2. Korištenje izjave 'If-Else'.
  3. Upotreba izjave 'If-Elif-Else'.
  4. Upotreba naredbe 'Ako' za provjeru prazne varijable
  5. Upotreba naredbe 'If' s logičkim operatorom
  6. Upotreba ugniježđenih naredbi 'If'.
  7. Upotreba naredbe “If” za provjeru postojanja datoteke
  8. Upotreba naredbe 'Ako' za provjeru postojanja imenika
  9. Upotreba naredbe 'If' s regularnim izrazom
  10. Upotreba naredbe 'Slučaj'.

Upotreba naredbe 'Ako'.

Ovaj primjer pokazuje jednostavnu upotrebu izjave 'if' u Bashu. Šest vrsta operatora za usporedbu može se koristiti za usporedbu numeričkih vrijednosti u Bashu. To su “-eq” (jednako), “-ne” (nije jednako), “-le” (manje od jednako), “-ge” (veće od jednako), “-lt” (manje od) i “ -gt” (veće od). Upotreba '-lt' i '-eq' prikazana je u sljedećoj skripti bez obzira je li broj manji od 99 ili nije provjeren pomoću operatora '-lt'. Broj je paran ili neparan i provjerava ga operator '-eq'.







#!/bin/bash

#Dodijelite brojčanu vrijednost

( ( broj = pedeset ) )

#Provjerite numeričku vrijednost pomoću izjave 'if'

ako [ $broj -lt 99 ]

zatim

jeka 'Broj je valjan.'

biti

#Provjeri je li broj paran ili ne

ako [ $ ( ( $broj % 2 ) ) -ekv 0 ]

zatim

jeka 'Broj je paran.'

biti

Izlaz :



Nakon izvršavanja prethodne skripte pojavljuje se sljedeći izlaz:



  p1





Idi na vrh

Korištenje izjave 'If-Else'.

Upotreba izjave 'if-else' prikazana je u sljedećoj skripti. Vrijednost niza preuzima se od korisnika i provjerava je li vrijednost 'PLAVA' ili nije pomoću izjave 'if-else'.



#!/bin/bash

#Uzmite vrijednost niza od korisnika

čitati -str 'Unesite svoju omiljenu boju:' boja

#Provjerite vrijednost niza pomoću izjave 'if-else'

ako [ ${boja^^} == 'PLAVA' ]

zatim

jeka 'Dobro, plava boja je dostupna.'

drugo

jeka ' $boja nije dostupno.'

biti

Izlaz :

Sljedeći izlaz pojavljuje se nakon izvršavanja prethodne skripte ako se 'crveno' uzme kao ulaz:

  p2-1

Sljedeći izlaz pojavljuje se nakon izvršavanja prethodne skripte ako se 'plavo' uzme kao ulaz:

  p2-2

Idi na vrh

Upotreba izjave 'If-Elif-Else'.

Upotreba izjave 'if-elif-else' prikazana je u sljedećoj skripti. Broj se uzima od korisnika i provjerava s različitim vrijednostima dok se ne pronađe podudaranje. Ako se pronađe podudaranje, ispisuje se odgovarajuća poruka. Ako se ne pronađe podudaranje, ispisuje se zadana poruka.

#!/bin/bash

#Uzmite ID vrijednost od korisnika

čitati -str 'Unesite svoj serijski broj:' serijski

#Provjerite ulaznu vrijednost pomoću naredbe 'if-elif-else'

ako [ $serijski == '4523' ]

zatim

jeka 'Odabrani ste u skupini A.'

Elif [ $serijski == '8723' ]

zatim

jeka 'Odabrani ste u skupini B.'

Elif [ $serijski == '3412' ]

zatim

jeka 'Odabrani ste u skupini C.'

drugo

jeka 'Niste odabrani' .

biti

Izlaz:

Nakon izvršavanja skripte s vrijednošću 8723 pojavljuje se sljedeći izlaz:

  p3-1

Nakon izvršavanja skripte s vrijednošću 9078 pojavljuje se sljedeći izlaz:

  p3-2

Idi na vrh

Upotreba naredbe 'Ako' za provjeru prazne varijable

Metoda provjere je li varijabla prazna bez upotrebe naredbe 'if' prikazana je u sljedećoj skripti. Opcija '-z' koristi se u izjavi 'if' za obavljanje ovog zadatka.

#!/bin/bash

#Uzmite ID vrijednost od korisnika

čitati -str 'Unesite svoj serijski broj:' serijski

#Provjeri je li varijabla prazna ili nije

ako [ ! -S $serijski ]

zatim

#Provjerite ulaznu vrijednost pomoću izjave 'if-elif-else'

ako [ $serijski == '690' ]

zatim

jeka 'Odabrani ste u tim-1.'

Elif [ $serijski == '450' ]

zatim

jeka 'Odabrani ste u tim-2.'

drugo

jeka 'Niste odabrani' .

biti

drugo

jeka 'Nije naveden serijski broj.'

biti

Izlaz :

Nakon izvršavanja skripte s vrijednošću 690 pojavljuje se sljedeći izlaz:

  p4-1

Sljedeći izlaz pojavljuje se nakon izvršavanja skripte ako se ne uzme ulazna vrijednost:

  p4-2

Idi na vrh

Upotreba naredbe 'If' s logičkim operatorima

U uvjetnoj izjavi Bash mogu se koristiti tri vrste logičkih operatora. To su logičko ILI (||), logičko I (&&) i logičko NE (!). Vrijednost koda preuzima se od korisnika. Ako ulazna vrijednost nije prazna, vrijednost se provjerava s dvije vrijednosti koda pomoću logičkog ILI. Ako vrijednost odgovara bilo kojem kodu, ispisuje se odgovarajuća poruka. Ako se ne pronađe odgovarajući kod, ispisuje se zadana poruka.

#!/bin/bash

#Uzmite šifru tečaja od korisnika

čitati -str 'Unesite kod tečaja:' kodirati

#Provjeri je li varijabla prazna ili nije

ako [ ! -S $kod ]

zatim

#Provjerite ulaznu vrijednost pomoću naredbe 'if-elif-else'

ako [ [ $kod == 'CSE-106' || $kod == 'CSE-108' ] ]

zatim

jeka 'CSE tečaj.'

Elif [ [ $kod == 'BBA-203' || $kod == 'BBA-202' ] ]

zatim

jeka 'BBA tečaj.'

drugo

jeka 'Nevažeći kod tečaja.'

biti

drugo

jeka 'Nije navedena šifra tečaja.'

biti

Izlaz :

Nakon izvršavanja skripte s ulaznom vrijednošću 'CSE-108' pojavljuje se sljedeći izlaz:

  p5-1

Nakon izvršavanja skripte s ulaznom vrijednošću 'BBA-56' pojavljuje se sljedeći izlaz:

  p5-2

Idi na vrh

Upotreba ugniježđenih naredbi 'If'.

Kada se 'if' uvjet koristi unutar drugog 'if' uvjeta, to se naziva ugniježđena 'if' izjava. Metoda korištenja ugniježđenog 'if' prikazana je u sljedećoj skripti. Od korisnika se uzimaju dvije vrijednosti ocjene. Ako ulazne vrijednosti nisu prazne, prvi uvjet 'if' provjerava je li vrijednost '$theory' veća ili jednaka 60 ili nije. Ako prvi uvjet 'if' vrati 'true', drugi uvjet 'if' provjerava je li vrijednost '$lab' veća ili jednaka 50 ili nije. Ako drugi uvjet 'if' također vrati 'true', ispisuje se poruka o uspjehu. U protivnom se ispisuje poruka o pogrešci.

#!/bin/bash

#Uzmite ocjenu teorije

čitati -str 'Unesite oznaku teorije:' teorija

#Uzmi laboratorijsku oznaku

čitati -str 'Unesite oznaku laboratorija:' laboratorija

#Provjeri jesu li varijable prazne ili ne

ako [ [ ! -S $teorija && ! -S $laboratorija ] ]

zatim

#Provjerite ulazne vrijednosti pomoću ugniježđene izjave 'if'

ako [ $teorija -ge 60 ]

zatim

ako [ $laboratorija -ge pedeset ]

zatim

jeka — Prošli ste.

drugo

jeka 'Nisi uspio.'

biti

drugo

jeka 'Nisi uspio.'

biti

drugo

jeka 'Ocjena teorije ili laboratorija je prazna.'

biti

Izlaz :

Sljedeći izlaz se pojavljuje ako su obje ili jedna od ulaznih vrijednosti prazne:

  p6-1

Sljedeći rezultat pojavljuje se ako se 78 uzme kao ocjena teorije, a 45 kao ocjena laboratorija. Ovdje drugi uvjet 'if' vraća 'false':

  p6-2

Sljedeći rezultat pojavljuje se ako se 67 uzme kao ocjena teorije, a 56 kao ocjena laboratorija. Ovdje oba 'if' uvjeta vraćaju 'true':

  p6-3

Sljedeći rezultat pojavljuje se ako se 50 uzme kao ocjena teorije, a 80 kao ocjena laboratorija. Ovdje prvi 'if' uvjet vraća 'false':

  p6-4

Idi na vrh

Upotreba naredbe “If” za provjeru postojanja datoteke

Postojanje datoteke može se provjeriti bash skriptom na dva načina. Jedan je korištenje operatora “-f” sa zagradama “[]”. Drugi je korištenje naredbe 'test' i operatora '-f'. Uzima se naziv datoteke i provjerava postojanje datoteke pomoću uvjeta 'if' s operatorom '-f'. Zatim se uzima drugi naziv datoteke i provjerava postojanje datoteke pomoću izjave 'if' s naredbom 'test' i operatorom '-f'.

#!/bin/bash

#Uzmite naziv datoteke

čitati -str 'Unesite naziv datoteke:' fn1

#Provjerite postoji li datoteka ili ne bez korištenja `test`

ako [ -f $fn1 ]

zatim

jeka ' $fn1 dokument postoji.'

drugo

jeka ' $fn1 Mapa ne postoji.'

biti

#Dodaj novi red

jeka

#Uzmite drugi naziv datoteke

čitati -str 'Unesite drugi naziv datoteke:' fn2

#Provjerite postoji li datoteka ili ne pomoću `test`

ako test -f $fn2 ; zatim

jeka ' $fn2 dokument postoji.'

#Provjerite je li datoteka prazna ili nije koristeći `test`

ako test -S $fn2 ; zatim

jeka ' $fn2 datoteka je prazna.'

drugo

jeka ' $fn2 datoteka nije prazna.'

biti

drugo

jeka ' $fn2 Mapa ne postoji.'

biti

Izlaz :

Sljedeći izlaz se pojavljuje nakon izvršavanja skripte uzimajući 'test.txt' i 'testing.txt' kao nazive datoteka. Prema izlazu, obje datoteke postoje na trenutnoj lokaciji, a datoteka 'testing.txt' je prazna:

  p7-1

Sljedeći izlaz se pojavljuje nakon izvršavanja skripte uzimajući 'f1.txt' i 'test.txt' kao nazive datoteka. Prema izlazu, datoteka 'f1.txt' ne postoji na trenutnoj lokaciji, a datoteka 'test.txt' nije prazna:

  p7-2

Idi na vrh

Upotreba naredbe 'Ako' za provjeru postojanja imenika

Postojanje direktorija može se provjeriti Bash skriptom na dva načina kao i datoteka. Jedan je korištenje operatora “-d” sa zagradama “[]”. Drugi je korištenje naredbe 'test' i operatora '-d'. Uzima se naziv imenika i provjerava postojanje imenika pomoću uvjeta “if” s operatorom “-d”. Zatim se uzima drugi naziv direktorija i provjerava postojanje datoteke pomoću izjave 'if' s naredbom 'test' i operatorom '-d'.

#!/bin/bash

#Uzmite naziv imenika

čitati -str 'Unesite naziv direktorija:' ti1

#Provjerite da li direktorij postoji ili ne bez korištenja `test`

ako [ -d $dir1 ]

zatim

jeka ' $dir1 imenik postoji.'

drugo

jeka ' $dir1 imenik ne postoji.'

biti

#Dodaj novi red

jeka

#Uzmite drugi naziv imenika

čitati -str 'Unesite drugi naziv direktorija:' režija2

#Provjerite postoji li datoteka ili ne pomoću `test`

ako test -d $dir2

zatim

jeka ' $dir2 imenik postoji.'

drugo

jeka ' $dir2 imenik ne postoji.'

biti

Izlaz :

Sljedeći izlaz se pojavljuje nakon izvršavanja skripte s nazivima direktorija 'temp' i 'files'. Prema izlazu, oba direktorija postoje na trenutnoj lokaciji. Zatim se izvršava naredba “ls” za provjeru sadržaja direktorija:

  p8-1

Sljedeći izlaz se pojavljuje nakon izvršavanja skripte s nazivima direktorija 'testiranje' i 'novi'. Prema izlazu, oba direktorija ne postoje na trenutnoj lokaciji. Zatim, izlaz naredbe “ls” pokazuje da oba direktorija ne postoje:

  p8-2

Idi na vrh

Upotreba naredbe 'If' s regularnim izrazom

Sljedeća skripta prikazuje metodu provjere valjanosti ulaznih podataka korištenjem izjave 'if' s regularnim izrazom. Ovdje se dvije ulazne vrijednosti uzimaju od korisnika i pohranjuju u varijablama “$bookname” i “$bookprice”. Uvjet “if” koristi se u skripti za provjeru sadrži li varijabla “$bookname” sve abecedne znakove, a “$bookprice” broj.

#!/bin/bash

#Uzmite naziv knjige i cijenu od korisnika

jeka -n 'Unesite naziv knjige:'

čitati ime knjige

jeka -n 'Unesite cijenu knjige:'

čitati cijena knjige

#Provjerite da naziv knjige sadrži samo abecedu

ako ! [ [ ' $naziv knjige ' =~ [ A-Za-Z ] ] ] ; zatim

jeka 'Naziv knjige je nevažeći.'

drugo

jeka 'Ime knjige je važeće.'

biti

#Provjerite da cijena knjige sadrži samo znamenke

ako ! [ [ ' cijena knjige $ ' =~ [ 0 - 9 ] ] ] ; zatim

jeka 'Cijena knjige može sadržavati samo znamenke.'

drugo

jeka 'Cijena knjige je važeća.'

biti

Izlaz :

Sljedeći izlaz pojavljuje se nakon izvršavanja skripte s ulaznim vrijednostima 'Bash Programming' kao nazivom knjige i 78 kao cijenom knjige:

  p9-1

Sljedeći izlaz pojavljuje se nakon izvršavanja skripte s ulaznim vrijednostima 90 kao nazivom knjige i 'Bash' kao cijenom knjige:

  p9-2

Idi na vrh

Upotreba naredbe 'Slučaj'.

Naredba 'case' je alternativa naredbi 'if-elif-else', ali svi zadaci naredbe 'if-elif-else' ne mogu se obaviti pomoću naredbe 'case'. Jednostavna upotreba izjave 'case' prikazana je u sljedećoj skripti. Numerička vrijednost se uzima od korisnika kao vrijednost tekućeg mjeseca. Zatim se ispisuje odgovarajući mjesec ako se pronađe odgovarajuća vrijednost u izjavi 'case'. Inače se ispisuje zadana poruka.

#!/bin/bash

#Uzmite vrijednost tekućeg mjeseca u broju

čitati -str 'Unesite današnji mjesec brojem:' b_mjesec

#Ispišite tekst prije ispisa naziva mjeseca

jeka -n 'Ime trenutnog mjeseca je '

#Pronađite i ispišite odgovarajući naziv mjeseca na temelju unosa

slučaj $b_mjesec u

1 | 01 ) jeka 'Siječanj.' ;;

2 | 02 ) jeka 'Veljača.' ;;

3 | 03 ) jeka 'Ožujak.' ;;

4 | 04 ) jeka 'Travanj.' ;;

5 | 05 ) jeka 'Svibanj.' ;;

6 | 06 ) jeka 'Lipanj.' ;;

7 | 07 ) jeka 'Srpanj.' ;;

8 | 08 ) jeka 'Kolovoz.' ;;

9 | 09 ) jeka 'Rujan.' ;;

10 ) jeka 'Listopad.' ;;

jedanaest ) jeka 'Studeni.' ;;

12 ) jeka 'Prosinac.' ;;

* ) jeka 'nije pronađeno.' ;;

esac

Izlaz :

Nakon izvršavanja skripte s vrijednošću 6 pojavljuje se sljedeći izlaz:

  p10-1

Nakon izvršavanja skripte s vrijednošću 09 pojavljuje se sljedeći izlaz:


  p10-2

Nakon izvršavanja skripte s vrijednošću 14 pojavljuje se sljedeći izlaz:

  p10-3

Idi na vrh

Zaključak

Različite upotrebe uvjetne logike korištenjem naredbi 'if' i 'case' prikazane su u 10 primjera ovog vodiča. Koncept korištenja uvjetne logike u Bashu bit će razjašnjen novim korisnicima Basha nakon čitanja ovog vodiča.