Kako obvladati pogojno logiko v Bashu

Kako Obvladati Pogojno Logiko V Bashu



Uporaba pogojne logike je zelo pomemben del katerega koli programskega jezika. Pogojno logiko je mogoče implementirati v Bash na različne načine za reševanje težav pri programiranju. V tej vadnici so prikazane metode uporabe pogojne logike v Bashu prek različnih vrst stavkov »if« in »case« za primerjavo nizov in številskih vrednosti, preverjanje vsebine spremenljivk, preverjanje obstoja datoteke ali imenika itd. .

Seznam vsebine:

  1. Uporaba izjave 'Če'.
  2. Uporaba izjave »Če-drugače«.
  3. Uporaba izjave »If-Elif-Else«.
  4. Uporaba stavka »Če« za preverjanje prazne spremenljivke
  5. Uporaba stavka »Če« z logičnim operatorjem
  6. Uporaba ugnezdenih izjav »Če«.
  7. Uporaba stavka »Če« za preverjanje obstoja datoteke
  8. Uporaba izjave »Če« za preverjanje obstoja imenika
  9. Uporaba stavka »Če« z regularnim izrazom
  10. Uporaba izjave »Case«.

Uporaba izjave 'Če'.

Ta primer prikazuje preprosto uporabo stavka »if« v Bashu. Za primerjavo številskih vrednosti v Bashu je mogoče uporabiti šest vrst primerjalnih operatorjev. To so “-eq” (enako), “-ne” (ni enako), “-le” (manj kot enako), “-ge” (večje kot enako), “-lt” (manj kot) in “ -gt” (večji kot). Uporabi »-lt« in »-eq« sta prikazani v naslednjem skriptu, ne glede na to, ali je število manjše od 99 ali ni bilo preverjeno z operatorjem »-lt«. Število je sodo ali liho in se preveri z operatorjem »-eq«.







#!/bin/bash

#Dodeli številsko vrednost

( ( število = petdeset ) )

#Preverite številsko vrednost s stavkom 'if'

če [ $število -Lt 99 ]

potem

odmev 'Številka je veljavna.'

biti

#Preveri ali je število sodo ali ne

če [ $ ( ( $število % 2 ) ) -ekv 0 ]

potem

odmev 'Število je sodo.'

biti

Izhod :



Po izvedbi prejšnjega skripta se prikaže naslednji rezultat:



  p1





Pojdi na vrh

Uporaba izjave »Če-drugače«.

Uporaba stavka »if-else« je prikazana v naslednjem skriptu. Vrednost niza se vzame od uporabnika in preveri, ali je vrednost »MODRA« ali ne z uporabo stavka »if-else«.



#!/bin/bash

#Vzemite vrednost niza od uporabnika

prebrati -str 'Vnesite svojo najljubšo barvo:' barva

#Preverite vrednost niza s stavkom 'if-else'

če [ ${barva^^} == 'MODR' ]

potem

odmev 'V redu, na voljo je modra barva.'

drugače

odmev ' $barva ni na voljo.'

biti

Izhod :

Naslednji izhod se pojavi po izvedbi prejšnjega skripta, če se kot vhod vzame »rdeča«:

  p2-1

Naslednji izhod se pojavi po izvedbi prejšnjega skripta, če se kot vhod vzame »modra«:

  p2-2

Pojdi na vrh

Uporaba izjave »If-Elif-Else«.

Uporaba stavka »if-elif-else« je prikazana v naslednjem skriptu. Število se vzame od uporabnika in preveri z različnimi vrednostmi, dokler se ne najde ujemanje. Če se najde ujemanje, se natisne ustrezno sporočilo. Če ni ujemanja, se natisne privzeto sporočilo.

#!/bin/bash

#Vzemi vrednost id od uporabnika

prebrati -str 'Vnesite svojo serijsko številko:' serijski

#Preverite vhodno vrednost s stavkom 'if-elif-else'

če [ $serijsko == '4523' ]

potem

odmev 'Izbrani ste v skupini A.'

Elif [ $serijsko == '8723' ]

potem

odmev 'Izbrani ste v skupini B.'

Elif [ $serijsko == '3412' ]

potem

odmev 'Izbrani ste v skupini C.'

drugače

odmev 'Niste izbrani' .

biti

Izhod:

Po izvedbi skripta z vrednostjo 8723 se prikaže naslednji rezultat:

  p3-1

Po izvedbi skripta z vrednostjo 9078 se prikaže naslednji rezultat:

  p3-2

Pojdi na vrh

Uporaba stavka »Če« za preverjanje prazne spremenljivke

Metoda preverjanja, ali je spremenljivka prazna brez uporabe stavka »if«, je prikazana v naslednjem skriptu. Možnost »-z« se uporablja v stavku »if« za izvedbo te naloge.

#!/bin/bash

#Vzemi vrednost id od uporabnika

prebrati -str 'Vnesite svojo serijsko številko:' serijski

#Preveri, ali je spremenljivka prazna ali ne

če [ ! -Z $serijsko ]

potem

#Preverite vhodno vrednost s stavkom 'if-elif-else'

če [ $serijsko == '690' ]

potem

odmev 'Izbrani ste v ekipi-1.'

Elif [ $serijsko == '450' ]

potem

odmev 'Izbrani ste v ekipi 2.'

drugače

odmev 'Niste izbrani' .

biti

drugače

odmev 'Serijska številka ni navedena.'

biti

Izhod :

Po izvedbi skripta z vrednostjo 690 se prikaže naslednji rezultat:

  p4-1

Naslednji izhod se prikaže po izvedbi skripta, če ni sprejeta nobena vhodna vrednost:

  p4-2

Pojdi na vrh

Uporaba stavka »Če« z logičnimi operatorji

V pogojnem stavku Bash lahko uporabite tri vrste logičnih operatorjev. To so logični ALI (||), logični IN (&&) in logični NE (!). Vrednost kode se vzame od uporabnika. Če vhodna vrednost ni prazna, se vrednost preveri z dvema vrednostma kode z uporabo logičnega ALI. Če se vrednost ujema s katero koli kodo, se natisne ustrezno sporočilo. Če ne najdete ustrezne kode, se natisne privzeto sporočilo.

#!/bin/bash

#Vzemite kodo tečaja od uporabnika

prebrati -str 'Vnesite kodo tečaja:' Koda

#Preveri, ali je spremenljivka prazna ali ne

če [ ! -Z $code ]

potem

#Preverite vhodno vrednost s stavkom 'if-elif-else'

če [ [ $code == 'CSE-106' || $code == 'CSE-108' ] ]

potem

odmev 'CSE tečaj.'

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

potem

odmev 'BBA tečaj.'

drugače

odmev 'Neveljavna koda predmeta.'

biti

drugače

odmev 'Koda predmeta ni podana.'

biti

Izhod :

Po izvedbi skripta z vhodno vrednostjo »CSE-108« se prikaže naslednji rezultat:

  p5-1

Po izvedbi skripta z vhodno vrednostjo »BBA-56« se prikaže naslednji rezultat:

  p5-2

Pojdi na vrh

Uporaba ugnezdenih izjav »Če«.

Ko je pogoj »če« uporabljen znotraj drugega pogoja »če«, se imenuje ugnezdeni stavek »če«. Metoda uporabe ugnezdenega »if« je prikazana v naslednjem skriptu. Od uporabnika se vzameta dve vrednosti ocene. Če vhodne vrednosti niso prazne, prvi pogoj »if« preveri, ali je vrednost »$theory« večja ali enaka 60 ali ne. Če prvi pogoj »if« vrne »true«, drugi pogoj »if« preveri, ali je vrednost »$lab« večja ali enaka 50 ali ne. Če tudi drugi pogoj »če« vrne »true«, se natisne sporočilo o uspehu. V nasprotnem primeru se natisne sporočilo o napaki.

#!/bin/bash

#Vzemite teoretično oceno

prebrati -str 'Vnesite oznako teorije:' teorija

#Vzemite laboratorijsko oznako

prebrati -str 'Vnesite oznako laboratorija:' lab

#Preveri ali so spremenljivke prazne ali ne

če [ [ ! -Z $teorija && ! -Z $lab ] ]

potem

#Preverite vhodne vrednosti z uporabo ugnezdenega stavka 'if'

če [ $teorija -ge 60 ]

potem

če [ $lab -ge petdeset ]

potem

odmev 'Prešli ste.'

drugače

odmev 'Ni vam uspelo.'

biti

drugače

odmev 'Ni vam uspelo.'

biti

drugače

odmev 'Oznaka teorije ali laboratorija je prazna.'

biti

Izhod :

Naslednji izhod se prikaže, če sta obe ali ena od vhodnih vrednosti prazna:

  p6-1

Naslednji izhod se pojavi, če se 78 vzame kot ocena teorije in 45 kot ocena laboratorija. Tu drugi pogoj »če« vrne »false«:

  str6-2

Naslednji rezultat se pojavi, če se 67 vzame kot ocena teorije in 56 kot ocena laboratorija. Tukaj oba pogoja »če« vrneta »true«:

  p6-3

Naslednji rezultat se pojavi, če se 50 vzame kot ocena teorije in 80 kot ocena laboratorija. Tu prvi pogoj »če« vrne »false«:

  str6-4

Pojdi na vrh

Uporaba stavka »Če« za preverjanje obstoja datoteke

Obstoj datoteke je mogoče preveriti s skriptom bash na dva načina. Ena je uporaba operatorja »-f« z oklepaji »[]«. Druga je uporaba ukaza »test« in operatorja »-f«. Ime datoteke se vzame in preveri obstoj datoteke z uporabo pogoja »if« z operatorjem »-f«. Nato se vzame drugo ime datoteke in preveri obstoj datoteke s stavkom »if« z ukazom »test« in operatorjem »-f«.

#!/bin/bash

#Vzemi ime datoteke

prebrati -str 'Vnesite ime datoteke:' fn1

#Preverite, ali datoteka obstaja ali ne brez uporabe `test`

če [ -f $fn1 ]

potem

odmev ' $fn1 datoteka obstaja.'

drugače

odmev ' $fn1 datoteka ne obstaja.'

biti

#Dodaj novo vrstico

odmev

#Vzemite drugo ime datoteke

prebrati -str 'Vnesite drugo ime datoteke:' fn2

#Preverite, ali datoteka obstaja ali ne z uporabo `test`

če test -f $fn2 ; potem

odmev ' $fn2 datoteka obstaja.'

#Preverite, ali je datoteka prazna ali ne z uporabo `test`

če test -Z $fn2 ; potem

odmev ' $fn2 datoteka je prazna.'

drugače

odmev ' $fn2 datoteka ni prazna.'

biti

drugače

odmev ' $fn2 datoteka ne obstaja.'

biti

Izhod :

Naslednji izhod se prikaže po izvedbi skripta, pri čemer se za imena datotek vzame »test.txt« in »testing.txt«. Glede na izhod sta obe datoteki na trenutni lokaciji in datoteka »testing.txt« je prazna:

  p7-1

Naslednji izhod se prikaže po izvedbi skripta, pri čemer se za imena datotek vzame »f1.txt« in »test.txt«. Glede na izhod datoteka »f1.txt« ne obstaja na trenutni lokaciji in datoteka »test.txt« ni prazna:

  p7-2

Pojdi na vrh

Uporaba izjave »Če« za preverjanje obstoja imenika

Obstoj imenika je mogoče preveriti s skriptom Bash na dva načina, tako kot datoteko. Ena je uporaba operatorja »-d« z oklepaji »[]«. Druga je uporaba ukaza »test« in operatorja »-d«. Ime imenika se vzame in preveri obstoj imenika z uporabo pogoja »if« z operatorjem »-d«. Nato se vzame drugo ime imenika in preveri obstoj datoteke z uporabo izjave »if« z ukazom »test« in operatorjem »-d«.

#!/bin/bash

#Vzemite ime imenika

prebrati -str 'Vnesite ime imenika:' ti1

#Preverite, ali imenik obstaja ali ne brez uporabe `test`

če [ -d $dir1 ]

potem

odmev ' $dir1 imenik obstaja.'

drugače

odmev ' $dir1 imenik ne obstaja.'

biti

#Dodaj novo vrstico

odmev

#Vzemite drugo ime imenika

prebrati -str 'Vnesite drugo ime imenika:' dir2

#Preverite, ali datoteka obstaja ali ne z uporabo `test`

če test -d $dir2

potem

odmev ' $dir2 imenik obstaja.'

drugače

odmev ' $dir2 imenik ne obstaja.'

biti

Izhod :

Naslednji izhod se prikaže po izvedbi skripta z imeni imenikov »temp« in »files«. Glede na izhod obstajata oba imenika na trenutni lokaciji. Nato se izvede ukaz 'ls', da se preveri vsebina imenikov:

  p8-1

Naslednji izhod se prikaže po izvedbi skripta z imeni imenikov »testiranje« in »novo«. Glede na izhod oba imenika ne obstajata na trenutni lokaciji. Nato izhod ukaza 'ls' pokaže, da oba imenika ne obstajata:

  p8-2

Pojdi na vrh

Uporaba stavka »Če« z regularnim izrazom

Naslednji skript prikazuje metodo preverjanja vhodnih podatkov z uporabo stavka »if« z regularnim izrazom. Tukaj sta dve vhodni vrednosti vzeti od uporabnika in sta shranjeni v spremenljivkah “$bookname” in “$bookprice”. Pogoj »if« se uporablja v skriptu za preverjanje, ali spremenljivka »$bookname« vsebuje vse črke in »$bookprice« vsebuje številko.

#!/bin/bash

#Vzemite ime in ceno knjige od uporabnika

odmev -n 'Vnesite ime knjige:'

prebrati ime knjige

odmev -n 'Vnesite ceno knjige:'

prebrati bookprice

#Preverite, da ime knjige vsebuje samo abecedo

če ! [ [ ' $ime knjige ' =~ [ A-Za-Z ] ] ] ; potem

odmev 'Ime knjige ni veljavno.'

drugače

odmev 'Ime knjige je veljavno.'

biti

#Preverite, da cena knjige vsebuje samo števke

če ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; potem

odmev 'Cena knjige lahko vsebuje samo številko.'

drugače

odmev 'Cena knjige velja.'

biti

Izhod :

Naslednji izhod se pojavi po izvedbi skripta z vhodnimi vrednostmi »Bash Programming« kot ime knjige in 78 kot cena knjige:

  p9-1

Po izvedbi skripta z vhodnima vrednostma 90 kot imenom knjige in »Bash« kot ceno knjige se prikaže naslednji rezultat:

  p9-2

Pojdi na vrh

Uporaba izjave »Case«.

Stavek »case« je alternativa stavku »if-elif-else«, vendar vseh nalog stavka »if-elif-else« ni mogoče izvesti z uporabo stavka »case«. Preprosta uporaba stavka »case« je prikazana v naslednjem skriptu. Številčna vrednost je vzeta od uporabnika kot vrednost trenutnega meseca. Nato se natisne ustrezni mesec, če je v stavku »case« najdena ustrezna vrednost. V nasprotnem primeru se natisne privzeto sporočilo.

#!/bin/bash

#Vzemite vrednost trenutnega meseca v številu

prebrati -str 'Vnesite današnji mesec s številko:' b_mesec

#Natisnite besedilo, preden natisnete ime meseca

odmev -n 'Ime trenutnega meseca je '

#Na podlagi vnosa poiščite in natisnite ustrezno ime meseca

Ovitek $b_mesec v

1 | 01 ) odmev 'Januar.' ;;

2 | 02 ) odmev 'Februar.' ;;

3 | 03 ) odmev 'marec.' ;;

4 | 04 ) odmev 'April.' ;;

5 | 05 ) odmev 'Maj.' ;;

6 | 06 ) odmev 'Junij.' ;;

7 | 07 ) odmev 'Julij.' ;;

8 | 08 ) odmev 'Avgust.' ;;

9 | 09 ) odmev 'september.' ;;

10 ) odmev 'oktober.' ;;

enajst ) odmev 'November.' ;;

12 ) odmev 'December.' ;;

* ) odmev 'ni najdeno.' ;;

esac

Izhod :

Po izvedbi skripta z vrednostjo 6 se prikaže naslednji rezultat:

  stran 10-1

Po izvedbi skripta z vrednostjo 09 se prikaže naslednji rezultat:


  stran 10-2

Po izvedbi skripta z vrednostjo 14 se prikaže naslednji rezultat:

  stran 10-3

Pojdi na vrh

Zaključek

Različne uporabe pogojne logike z uporabo stavkov »if« in »case« so prikazane v 10 primerih te vadnice. Koncept uporabe pogojne logike v Bashu bo po branju te vadnice počiščen za nove uporabnike Bash.