Kako koristiti test uslove unutar Bash Scripta

Komanda testa se može koristiti u komandnoj liniji Linuxa da bi upoređivala jedan element protiv drugog, ali se najčešće koristi u BASH shell skriptama kao dio uslovnih izjava koje kontrolišu logiku i protok programa.

Osnovni primer

Možete probati ove komande jednostavno otvaranjem prozora terminala .

test 1-eq 2 && echo "da" || eho "ne"

Gornja komanda može se razvrstati na sledeći način:

U suštini, komanda se upoređuje od 1 do 2 i one se podudaraju sa echo izvodi se "da" izjava koja prikazuje "da" i ako se ne podudaraju sa echo "ne" izjava se izvršava koja prikazuje "ne".

Upoređivanje brojeva

Ako upoređujete elemente koji se razmatraju kao brojevi, možete koristiti sledeće operatere upoređivanja:

Primjeri:

test 1-eq 2 && echo "da" || eho "ne"

(prikazuje se "ne" na ekranu jer 1 ne odgovara 2)

test 1 -ge 2 && echo "da" || eho "ne"

(prikazuje "ne" na ekranu jer 1 nije veći ili jednak 2)

test 1 -gt 2 && echo "da" || eho "ne"

(prikazuje se "ne" na ekranu jer 1 nije veći od 2)

test 1 -le 2 && echo "da" || eho "ne"

(prikazuje "da" na ekranu jer je 1 manji ili jednak 2)

test 1 -lt 2 && echo "da" || eho "ne"

(prikazuje "da" na ekranu jer je 1 manji ili jednak 2)

test 1 -ne 2 && echo "da" || eho "ne"

(prikazuje "da" na ekran jer 1 nije jednako 2)

Upoređivanje teksta

Ako upoređujete elemente koji razdvajaju nizove, možete koristiti sledeće operatere poređenja:

Primjeri:

test "string1" = "string2" && echo "da" || eho "ne"

(prikazuje "ne" na ekranu jer "string1" nije jednak "string2")

test "string1"! = "string2" && echo "da" || eho "ne"

(prikazuje "da" na ekran jer "string1" nije jednak "string2")

test -n "string1" && echo "da" || eho "ne"

(prikazuje "da" na ekran jer "string1" ima dužinu niza veću od nule)

test -z "string1" && echo "da" || eho "ne"

(prikazuje "ne" na ekranu jer "string1" ima dužinu niza veću od nule)

Upoređivanje datoteka

Ako upoređujete datoteke, možete koristiti sledeće operatere poređenja:

Primjeri:

test / putanje / do / file1 -n / path / to / file2 && echo "da"

(Ako je datoteka1 novija od fajla2 onda će se prikazati riječ "da"),

test -e / putanje / do / file1 && echo "da"

(ako postoji datoteka1, prikazaće se riječ "da")

test -O / path / do / file1 && echo "da"

(ako posedujete datoteku1, onda se prikaže riječ "da")

Terminologija

Upoređivanje višestrukih uslova

Do sada je sve upoređivalo jednu stvar sa drugom, ali šta ako želite da uporedite dva uslova.

Na primer, ako životinja ima 4 noge i ide "moo" verovatno je krava. Jednostavno provera 4 noge ne garantuje da imate kravu, ali proveravate zvuk koji sigurno radi.

Da biste testirali oba stanja, upotrebite sledeću izjavu:

test 4 -eq 4 -a "moo" = "moo" && echo "to je krava" || echo "to nije krava"

Ključni deo ovde je -a koja se zalaže i.

Postoji bolji i najčešće korišćeni način izvršenja istog testa i to je sledeće:

test 4 -eq 4 && test "moo" = "moo" && echo "to je krava" || echo "to nije krava"

Još jedan test koji želite da uradite je upoređivanje dve izjave i ako je istina izvoditi niz. Na primer, ako želite da proverite da li postoji datoteka sa imenom "file1.txt" ili postoji datoteka pod nazivom "file1.doc", možete koristiti sljedeću naredbu

test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "datoteka1 ne postoji"

Ključni deo ovde je -o što se odnosi na ili.

Postoji bolji i najčešće korišćeni način izvršenja istog testa i to je sledeće:

test -e file1.txt || test-e file1.doc && echo "file1 exists" || echo "datoteka1 ne postoji"

Eliminisanje test ključne reči

Zaista ne morate koristiti riječ test za izvršavanje poređenja. Sve što treba da uradite je da priložite izjavu u kvadratnim zagradama kako slijedi:

[-e file1.txt] && echo "datoteka1 postoji" || echo "datoteka1 ne postoji"

[I] u osnovi znači isto kao i test.

Sada znate da možete poboljšati upoređivanje više uslova na sledeći način:

[4 -eq 4] && ["moo" = "moo"] && echo "to je krava" || echo "to nije krava"

[-e file1.txt] || [-e file1.doc] && echo "datoteka1 postoji" || echo "datoteka1 ne postoji"

Sažetak

Komanda testa je korisnija u skriptama zato što možete testirati vrednost jedne promenljive u odnosu na drugi i kontrolni protok programa. Na standardnoj komandnoj liniji, možete ga koristiti da biste testirali da li postoji datoteka ili