Skip to main content

Kako koristiti testne uvjete unutar skupa skupa

Week 1 (Lipanj 2025)

Week 1 (Lipanj 2025)
Anonim

Testna naredba se može koristiti na Linux komandnoj liniji za usporedbu jednog elementa protiv drugog, ali se uobičajeno koristi u skriptama BASH ljuske 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:

  • test - To znači da ćete izvršiti usporedbu
  • 1 - Prvi element koji ćete usporediti
  • - eq - Kako uspoređujete. U ovom slučaju testirate je li jedan broj jednak broju.
  • 2 - Element koji uspoređujete prvi element protiv
  • && - Pokrenite sljedeću izjavu ako je rezultat istinit
  • echo "yes" - Naredba za pokretanje ako se usporedba vraća istinito
  • || - Pokrenite sljedeću izjavu ako je rezultat netočan
  • echo "no" - Naredba za pokretanje ako se usporedba vraća neistinito

U biti, naredba uspoređuje 1 do 2, a ako se podudaraju, izvršava se echo "yes" izjava koja prikazuje "da" i ako se ne podudaraju, izvodi echo "no" koji prikazuje "ne".

Usporedba brojeva

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

  • - eq - vrijednost 1 jednaka vrijednost 2
  • -ge - je vrijednost 1 veća ili jednaka vrijednosti 2
  • -gt - je vrijednost 1 veća od vrijednosti 2
  • -le - je vrijednost 1 manja ili jednaka vrijednosti 2
  • -lt - vrijednost 1 je manja od vrijednosti 2
  • -ne - vrijednost 1 nije jednaka vrijednost 2

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 parciraju kao nizovi, možete upotrijebiti sljedeće operatore za usporedbu:

  • = - označava niz 1 niz odgovara 2
  • ! = - je niz 1 različit od stringa 2
  • -n - duljina niza je veća od 0
  • -z - je duljina niza 0

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 za usporedbu:

  • -ef - Da li datoteke imaju isti uređaj i brojeve inoda (jesu li iste datoteke)
  • -nt - Je li prva datoteka novije od druge datoteke
  • - je li prva datoteka starija od druge datoteke
  • -b - Datoteka postoji i blok je posebna
  • -c - Datoteka postoji i znak je posebna
  • -d - Datoteka postoji i je direktorij
  • -e - Datoteka postoji
  • -f - Datoteka postoji i redovna je datoteka
  • -g - Datoteka postoji i ima navedeni broj grupe
  • -G - Datoteka postoji i vlasnik je grupe korisnika
  • -h - Datoteka postoji i simbolična je veza
  • -k - Datoteka postoji i ima svoj sticky bit set
  • -L - isto kao i -h
  • -O - ​​Datoteka postoji da ste vlasnik
  • -p - Datoteka postoji i nazvana je cijev
  • -r - Datoteka postoji i čitljiva je
  • -s - Datoteka postoji i ima veličinu veću od nule
  • -S - Datoteka postoji i jest utičnica
  • -t - Deskriptor datoteka otvara se na terminalu
  • -u - Datoteka postoji i set-user-id bit je postavljen
  • -w - Datoteka postoji i može se pisati
  • -x - Datoteka postoji i izvršna je

Primjeri

test / put / to / file1 -nt / put / to / 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

  • Posebni blok - datoteka je blokni uređaj, što znači da se podaci čita u blokovima bajtova. To su uglavnom datoteke uređaja kao što su tvrdi diskovi.
  • Posebna osobina - Datoteka se ponaša odmah kada pišete na njega i obično je uređaj poput serijskog priključka

Usporedba višestrukih uvjeta

Do sada, sve je uspoređivalo jednu stvar s drugom, ali što ako želite usporediti dva uvjeta?

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

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"

Još jedan test koji želite 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 datoteka "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 jest -o što znači 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.