Kako koristiti testne uvjete unutar skupa skupa

Testna naredba može se koristiti na Linux komandnoj liniji za usporedbu jednog elementa protiv drugog, ali se uobičajeno koristi u skriptama BASH skripte kao dio uvjetnih izjava koje kontroliraju logiku i tok programa.

Osnovni primjer

Te naredbe možete isprobati jednostavnim otvaranjem prozora terminala .

test 1-eq 2 && echo "yes" || odjek "ne"

Gornja naredba može se podijeliti na sljedeći način:

U biti, naredba uspoređuje 1 do 2 i odgovara echo "yes" izjava koja se prikazuje "yes" i ako ne odgovara echo "no" izjava je izvršena koja prikazuje "ne".

Usporedba brojeva

Ako uspoređujete elemente koji se raščlanjuju kao brojevi, možete upotrijebiti sljedeće operatore usporedbe:

Primjeri:

test 1-eq 2 && echo "yes" || odjek "ne"

(prikazuje "ne" na zaslonu jer 1 nije jednak 2)

test 1 -ge 2 & & echo "yes" || odjek "ne"

(prikazuje "ne" na zaslonu jer 1 nije veća ili jednaka 2)

test 1 -gt 2 && echo "yes" || odjek "ne"

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

test 1 -le 2 && echo "yes" || odjek "ne"

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

test 1 -lt 2 && echo "yes" || odjek "ne"

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

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

(prikazuje "da" na zaslonu jer 1 nije jednak 2)

Uspoređujući tekst

Ako uspoređujete elemente koji se analiziraju kao nizovi, možete upotrijebiti sljedeće operatore usporedbe:

Primjeri:

test "string1" = "string2" && echo "yes" || odjek "ne"

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

test "string1"! = "string2" && echo "yes" || odjek "ne"

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

test -n "string1" && echo "yes" || odjek "ne"

(prikazuje "da" na zaslonu jer "string1" ima duljinu niza veću od nule)

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

(prikazuje "ne" na zaslonu jer "string1" ima duljinu niza veću od nule)

Usporedba datoteka

Ako uspoređujete datoteke, možete koristiti sljedeće operatore usporedbe:

Primjeri:

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

(Ako je file1 noviji od datoteke2, tada će se prikazati riječ "da"

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

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

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

(ako posjedujete datoteku1 onda se prikazuje riječ "da")

Terminologija

Usporedba višestrukih uvjeta

Do sada je sve usporedilo jednu stvar s drugom, ali što ako želite usporediti dva uvjeta.

Na primjer, ako životinja ima 4 noge i "moo", to je vjerojatno krava. Jednostavno provjeravanje za 4 noge ne jamči da imate krava, ali provjerite zvuk koji čini sigurno radi.

Za testiranje oba uvjeta odjednom upotrijebite sljedeću izjavu:

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

Ovdje je ključni dio -a koji označava i.

Postoji bolji i najčešće korišten način izvođenja istog testa i to je kako slijedi:

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

Drugi test koji biste trebali napraviti jest uspoređivanje dviju izjava i ako je istina izlazni niz. Na primjer, ako želite provjeriti postoji li datoteka pod nazivom "file1.txt" ili postoji datoteka nazvana "file1.doc", možete upotrijebiti sljedeću naredbu

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

Ključni dio ovdje je -o koji označava ili.

Postoji bolji i najčešće korišten način izvođenja istog testa i to je kako slijedi:

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

Uklanjanje testne ključne riječi

Zapravo ne morate koristiti riječ test za izvršavanje usporedbe. Sve što morate učiniti je priložiti izjavu u kvadratnim zagradama kako slijedi:

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

[I] zapravo znači isto kao i test.

Sada znate ovo što možete poboljšati ako uspoređujete više uvjeta kako slijedi:

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

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

Sažetak

Testna naredba je korisnija u skriptama jer možete testirati vrijednost jedne varijable protiv drugog i protoka upravljačkog programa. Na standardnoj naredbenoj liniji možete ga koristiti za testiranje postoji li datoteka ili