Kako uporabljati testne pogoje znotraj scenarija Bash

Preizkusni ukaz lahko uporabite v ukazni vrstici Linux, da primerjate en element proti drugemu, vendar ga bolj pogosto uporabljate v skriptih BASH kot del pogojnih izjav, ki nadzorujejo logiko in pretok programa.

Osnovni primer

Te ukaze lahko poskusite preprosto tako, da odprete terminalsko okno .

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

Zgornji ukaz lahko razčlenite na naslednji način:

V bistvu je ukaz primerjal 1 do 2 in se ujemajo z odzivom echo "yes" izjavo, ki prikaže "da", in če se ne ujemajo z izjavo "ne", se izvede, ki prikazuje "ne".

Primerjava številk

Če primerjate elemente, ki jih lahko razčlenite kot številke, lahko uporabite naslednje operaterje primerjave:

Primeri:

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

(na zaslonu se prikaže "ne", ker 1 ne ustreza 2)

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

(na zaslonu se prikaže "ne", ker 1 ni več ali enak 2)

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

(na zaslonu se prikaže "ne", ker 1 ni več kot 2)

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

(prikaže zaslon »da« na zaslonu, ker je 1 manjši ali enak 2)

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

(prikaže zaslon »da« na zaslonu, ker je 1 manjši ali enak 2)

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

(prikaže zaslon »da« na zaslonu, ker 1 ni enak 2)

Primerjanje besedila

Če primerjate elemente, ki jih obravnavamo kot nizov, lahko uporabite naslednje operaterje primerjave:

Primeri:

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

(na zaslonu se prikaže "ne", ker "string1" ne ustreza "string2")

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

(prikaže "da" na zaslonu, ker "string1" ne ustreza "string2")

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

(na zaslonu se prikaže "da", ker ima "string1" dolžino niza, ki je večja od nič)

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

(na zaslonu se prikaže "ne", ker ima "string1" dolžino niza, ki je večja od nič)

Primerjanje datotek

Če primerjate datoteke, lahko uporabite naslednje operaterje primerjave:

Primeri:

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

(Če je datoteka1 novejša od datoteke2, se prikaže beseda "da")

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

(če obstaja datoteka1, se prikaže beseda "da")

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

(če imate datoteko1, se prikaže beseda "da")

Terminologija

Primerjava več pogojev

Do zdaj je vse primerjalo eno stvar z drugo, a kaj, če želite primerjati dva pogoja.

Na primer, če ima žival štiri noge in gre "moo", je verjetno krava. Preprosto preverjanje za 4 noge ne zagotavlja, da imate krav, ampak preverite zvok, ki ga zagotovo počne.

Za preizkus obeh pogojev hkrati uporabite naslednjo izjavo:

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

Ključni del tukaj je -a, ki stoji za in.

Obstaja boljši in bolj pogosto uporabljen način izvajanja istega testa, in sicer:

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

Še en test, ki ga boste morda želeli, je primerjava dveh izjav in če je bodisi resnično izpisajte niz. Če na primer želite preveriti, ali obstaja datoteka, imenovana "file1.txt", ali obstaja datoteka, imenovana "file1.doc", lahko uporabite naslednji ukaz

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

Ključni del je -o, ki pomeni ali.

Obstaja boljši in bolj pogosto uporabljen način izvajanja istega testa, in sicer:

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

Odpravljanje testne ključne besede

Za primerjavo dejansko ne potrebujete besednega testa. Vse, kar morate storiti, je, da izjavo v oglatih oklepajih zapišete na naslednji način:

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

[In] v bistvu pomeni enako kot test.

Zdaj veste, da to lahko izboljšate pri primerjavi več pogojev, kot sledi:

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

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

Povzetek

Preskusni ukaz je bolj uporaben v skriptah, saj lahko preizkusite vrednost ene spremenljivke v drugem in krmilnem toku programa. V standardni ukazni vrstici ga lahko uporabite za preverjanje, ali obstaja datoteka ali