Kaip naudotis testavimo sąlygomis per Bash scenarijų

Bandymo komandą galima naudoti komandinėje eilutėje Linux palyginti vieną elementą su kita, bet ji dažniausiai naudojama BASH shell scenarijose kaip sąlyginių teiginių, kurie kontroliuoja logiką ir programos srautą, dalis.

Pagrindinis pavyzdys

Galite išbandyti šias komandas tiesiog atidarę terminalo langą .

1 testas-ek 2 && echo "taip" || echo "no"

Pirmiau nurodyta komanda gali būti suskirstyta taip:

Iš esmės komanda lygina 1 iki 2, ir jie atitinka echo "taip" teiginį, kuris parodo "taip", ir jei jie neatitinka el. Charakteristikos "no", kuri rodo "ne".

Lyginant numerius

Jei lyginate elementus, kurie analizuojami kaip skaičiai, galite naudoti šiuos palyginimo operatorius:

Pavyzdžiai:

1 testas-ek 2 && echo "taip" || echo "no"

(ekrane rodomas "ne", nes 1 nėra lygus 2)

test 1 -ge 2 && echo "taip" || echo "no"

(ekrane rodomas "ne", nes 1 yra ne didesnis arba lygus 2)

1 bandymas-gt 2 && echo "taip" || echo "no"

(ekrane rodomas "ne", nes 1 yra ne didesnis kaip 2)

test 1-second 2 && echo "taip" || echo "no"

(ekrane parodomas "taip", nes 1 yra mažesnis arba lygus 2)

bandymas 1 -lt 2 && echo "taip" || echo "no"

(ekrane parodomas "taip", nes 1 yra mažesnis arba lygus 2)

test 1 -ne 2 && echo "taip" || echo "no"

(ekrane parodomas "taip", nes 1 nėra lygus 2)

Teksto palyginimas

Jei lyginate elementus, kurie analizuojami kaip eilutės, galite naudoti šiuos palyginimo operatorius:

Pavyzdžiai:

test "string1" = "string2" && echo "taip" || echo "no"

(rodomas ekranas "ne", nes "string1" nėra lygus "string2")

test "string1"! = "string2" && echo "taip" || echo "no"

(ekrane rodomas "taip", nes "string1" nėra lygus "string2")

bandymas -n "string1" && echo "taip" || echo "no"

(ekrane rodomas "taip", nes "string1" eilutės ilgis yra didesnis nei nulis)

test -z "string1" && echo "taip" || echo "no"

(ekrane rodomas "ne", nes "string1" eilutės ilgis yra didesnis nei nulis)

Failų palyginimas

Jei lyginate failus, galite naudoti šiuos palyginimo operatorius:

Pavyzdžiai:

test / path / to / file1 -n / path / to / file2 && echo "yes"

(Jei failas1 yra naujesnis nei failas2, tada rodomas žodis "taip")

bandymas -e / path / to / file1 && echo "taip"

(jei failas1 egzistuoja, bus rodomas žodis "taip")

bandymas -O / path / to / file1 && echo "taip"

(jei turite failą1, tada rodomas žodis "taip")

Terminologija

Kintamųjų sąlygų palyginimas

Iki šiol viskas palygino vieną dalyką su kitu, bet, jei norite palyginti dvi sąlygas.

Pvz., Jei gyvūnas turi 4 kojas ir eina "moo", tai tikriausiai yra karvė. Tiesiog patikrinkite 4 kojas negarantuoja, kad turite karvę, bet patikrinsite, kokį garsą jis daro.

Norėdami išbandyti abi sąlygas vienu metu, naudokite šį teiginį:

testas 4-eq 4 -a "moo" = "moo" && echo "tai karvė" || echo "tai nėra karvė"

Svarbiausia čia yra -a, kuri reiškia ir.

Yra geresnis ir dažniau naudojamasis tas pats bandymas, kuris yra toks:

testas 4-eq 4 && bandymas "moo" = "moo" && echo "tai karvė" || echo "tai nėra karvė"

Kitas testas, kurį galbūt norėsite padaryti, yra palyginti du teiginius, o jei yra tiesa, išvestina eilutę. Pavyzdžiui, jei norite patikrinti, ar yra failas su pavadinimu "file1.txt", arba egzistuoja failas "file1.doc", galite naudoti šią komandą

test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "failas1 neegzistuoja"

Svarbiausia čia yra -o, kuris reiškia arba.

Yra geresnis ir dažniau naudojamasis tas pats bandymas, kuris yra toks:

test-e file1.txt || test-e file1.doc && echo "file1 exists" || echo "failas1 neegzistuoja"

Testo raktinio žodžio panaikinimas

Jūs neturite iš tikrųjų naudoti žodžio testą palyginimui atlikti. Viskas, ką jums reikia padaryti, yra pridėti pareiškimą skliaustuose taip:

[-e file1.txt] && echo "failas1 egzistuoja" || echo "failas1 neegzistuoja"

[Ir] iš esmės reiškia tą patį kaip bandymą.

Dabar žinote, kad galite tobulinti kelias sąlygas lyginant taip:

[4-eq 4] && ["moo" = "moo"] && echo "tai karvė" || echo "tai nėra karvė"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "failas1 neegzistuoja"

Santrauka

Bandymo komanda yra labiau naudinga scenarijose, nes galite patikrinti vieno kintamojo reikšmę kitai ir valdymo programos srautą. Standartinėje komandų eilutėje galite naudoti ją patikrinti, ar egzistuoja failas arba