U ovoj temi ćemo razumjeti kako koristiti if izjave u Bash skriptama za dovršavanje naših automatiziranih zadataka.
datotečni sustav u linuxu
Bash ako su izjave korisne. Koriste se za izvođenje uvjetnih zadataka u sekvencijalnom tijeku izvođenja naredbi. If izjave nam obično omogućuju donošenje odluka u našim Bash skriptama. Oni nam pomažu da odlučimo hoćemo li ili ne pokrenuti dio koda na temelju uvjeta koji možemo postaviti.
Osnovne if izjave
Osnovna naredba if naređuje da se izvrši samo određeni skup radnji ako je određeni uvjet istinit. Ako nije točno, nemojte izvršavati te radnje. Ako se izjava temelji na sljedećem formatu:
Sintaksa
if [ expression ]; then statements fi
Izjava između zatim i biti (Ako je unatrag) bit će izvršen samo ako je izraz (između uglatih zagrada) istinit.
Bilješka:Pripazite na razmake koji se koriste u prvom retku i točku i zarez na kraju prvog retka; oba su obavezna za korištenje.Ako je uvjetna izjavazavršava sabiti.
- Za korištenje više uvjeta s operatorom AND:
if [ expression_1 ] && [ expression_2 ]; then statements fi
- Za korištenje više uvjeta s operatorom OR:
if [ expression_1 ] || [ expression_2 ]; then statements fi
- Za složene izraze s operatorima I & ILI možemo koristiti sljedeću sintaksu:
if [ expression_1 && expression_2 || expression_3 ]; then statements fi
Slijede neki primjeri koji pokazuju korištenje if naredbe:
Primjer 1
U ovom primjeru uzmite korisnički unos bilo kojeg broja i provjerite je li vrijednost veća od 125.
#!/bin/bash read -p ' Enter number : ' number if [ $number -gt 125 ] then echo 'Value is greater than 125' fi
Izlaz
Ako unesemo broj 159, izlaz će izgledati ovako:
Primjer 2
U ovom primjeru demonstriramo korištenje izjava if s jednostavnim scenarijem usporedbe dva niza:
#!/bin/bash # if condition is true if [ 'myfile' == 'myfile' ]; then echo 'true condition' fi # if condition is false if [ 'myfile' == 'yourfile' ]; then echo 'false condition' fi
Izlaz
10 od 50
Primjer 3
U ovom primjeru pokazujemo kako usporediti brojeve pomoću naredbe if:
#!/bin/bash #if condition (greater than) is true if [ 10 -gt 3 ]; then echo '10 is greater than 3.' fi #if condition (greater than) is false if [ 3 -gt 10 ]; then echo '3 is not greater than 10.' fi #if condition (lesser than) is true if [ 3 -lt 10 ]; then echo '3 is less than 10.' fi #if condition (lesser than) is false if [ 10 -lt 3 ]; then echo '10 is not less than 3.' fi #if condition (equal to) is true if [ 10 -eq 10 ]; then echo '10 is equal to 10.' fi #if condition (equal to) is false if [ 10 -eq 9 ]; then echo '10 is not equal to 9' fi
Izlaz
Primjer 4
U ovom primjeru definirat ćemo kako koristiti operator AND za uključivanje više uvjeta u if izraz:
#!/bin/bash # TRUE && TRUE if [ 8 -gt 6 ] && [ 10 -eq 10 ]; then echo 'Conditions are true' fi # TRUE && FALSE if [ 'mylife' == 'mylife' ] && [ 3 -gt 10 ]; then echo 'Conditions are false' fi
Izlaz
Primjer 5
U ovom primjeru ćemo definirati kako koristiti OR operator za uključivanje više uvjeta u if izraz:
#!/bin/bash # TRUE || FALSE if [ 8 -gt 7 ] || [ 10 -eq 3 ]; then echo ' Condition is true. ' fi # FALSE || FALSE if [ 'mylife' == 'yourlife' ] || [ 3 -gt 10 ]; then echo ' Condition is false. ' fi
Izlaz
Primjer 6
U ovom primjeru definirat ćemo kako koristiti AND i OR za uključivanje više uvjeta u if izraz:
#!/bin/bash # TRUE && FALSE || FALSE || TRUE if [[ 10 -eq 10 && 5 -gt 4 || 3 -eq 4 || 3 -lt 6 ]]; then echo 'Condition is true.' fi # TRUE && FALSE || FALSE if [[ 8 -eq 8 && 8 -gt 10 || 9 -lt 5 ]]; then echo 'Condition is false' fi
Izlaz
tat puni oblik
Opcije za naredbu If u Bash skriptiranju
If izjava sadrži mnogo opcija za izvođenje određenog zadatka. Ove se opcije mogu koristiti za operacije s datotekama, operacije s nizovima itd. Slijede neke od najčešće korištenih opcija:
Opcije (Operatori) | Opis |
---|---|
! IZRAZ | Za provjeru je li EXPRESSION lažan. |
-n STRING | Za provjeru je li duljina STRING veća od nule. |
-z STRING | Za provjeru je li duljina STRING nula (tj. prazna je) |
STRING1 == STRING2 | Za provjeru je li STRING1 jednako STRING2. |
STRING1 != STRING2 | Za provjeru nije li STRING1 jednako STRING2. |
CIJELI BROJ1 -eq CIJELI BROJ2 | Za provjeru je li INTEGER1 brojčano jednak INTEGER2. |
CIJELI BROJ1 -gt CIJELI BROJ2 | Za provjeru je li INTEGER1 brojčano veći od INTEGER2. |
CIJELI BROJ1 -lt CIJELI BROJ2 | Za provjeru je li INTEGER1 brojčano manji od INTEGER2. |
-d DATOTEKA | Za provjeru postoji li FILE i je li direktorij. |
-e DATOTEKA | Za provjeru postoji li FILE. |
-r DATOTEKA | Za provjeru postoji li DATOTEKA i postoji li dopuštenje za čitanje. |
-s DATOTEKA | Za provjeru da li FILE postoji i da li je veličina veća od nule (što znači da nije prazna). |
-w DATOTEKA | Za provjeru postoji li DATOTEKA i postoji li dopuštenje za pisanje. |
x DATOTEKA | Za provjeru da li FILE postoji i da li je odobreno dopuštenje za izvršenje. |
Ugniježđeni If
Možete primijeniti onoliko 'if naredbi' koliko je potrebno unutar vaše bash skripte. Također je moguće koristiti if naredbu unutar druge 'if naredbe'. Poznata je kao ugniježđena If naredba.
Primjer
U ovom primjeru ćemo pronaći 'je li dati broj veći od 50 i je li paran broj' pomoću ugniježđenog if izraza.
#!/bin/bash #Nested if statement if [ -gt 50 ] then echo 'Number is greater than 50.' if (( % 2 == 0 )) then echo 'and it is an even number.' fi fi
Izlaz
Ako unesemo vrijednost argumenta kao 100, tada će izlaz izgledati ovako:
Zaključak
U ovoj smo temi raspravljali o tome kako bismo mogli koristiti uvjetno grananje u sekvencijalnom tijeku izvođenja naredbi s bash if naredbom.