Skip to main content

Kaip naudotis testavimo sąlygomis per Bash scenarijų

Anonim

Bandymo komandą galima naudoti "Linux" komandinėje eilutėje, kad palygintumėte vieną elementą su kitu, tačiau 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:

  • testas - tai reiškia, kad jūs ketinate atlikti palyginimą
  • 1 - pirmasis elementas, kurį ketinate palyginti
  • -eq - Kaip lyginti. Tokiu atveju bandote, ar vienas numeris yra lygus kitam.
  • 2 - Elementas, kurį palyginote su pirmuoju elementu
  • && - paleiskite šį teiginį, jei rezultatas yra teisingas
  • echo "yes" - komanda paleisti, jei palyginimas grįžta tiesa
  • || - Jei šis rezultatas yra klaidingas, paleiskite šį teiginį
  • echo "no" - komanda paleisti, jei palyginimas grąžinamas klaidingai

Iš esmės komanda lygina nuo 1 iki 2 ir, jei jos atitinka, atsiranda užrašas "taip", kuris parodo "taip", ir jei jie nesutampa, vykdomas "echo" nerašas, kuris rodo "ne".

Lyginant numerius

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

  • -eq - vertė 1 lygi 2 vertė
  • -ge - vertė 1 didesnė arba lygi 2 reikšmei
  • -gt - vertė 1 yra didesnė už 2 vertę
  • -le - vertė 1 yra mažesnė arba lygi 2 reikšmei
  • -lt - vertė 1 yra mažesnė už 2 vertę
  • -ne - vertė 1 nėra lygi vertė 2

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:

  • = - ar 1 stygos atitikmenų eilutė 2
  • ! = - 1 eilutė skiriasi nuo 2 stygos
  • -n - stygos ilgis yra didesnis nei 0
  • -z - yra eilutės ilgis 0

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:

  • -ef - Ar failai turi tą patį įrenginį ir inode numerius (ar jie yra tas pats failas)
  • -nt - Ar pirmasis failas yra naujesnis už antrąjį failą
  • -ot - Ar pirmasis failas yra senesnis už antrąjį failą
  • -b - failas egzistuoja ir yra blokas specialus
  • -c - failas egzistuoja ir yra simbolis specialus
  • -d - failas egzistuoja ir yra aplankas
  • -e - failas egzistuoja
  • -f - Failas egzistuoja ir yra įprastas failas
  • -g - failas egzistuoja ir turi nurodytą grupės numerį
  • -G - failo egzempliorius ir savininkas yra vartotojo grupės
  • -h - failas egzistuoja ir yra simbolinė nuoroda
  • -k - failas egzistuoja ir jo lipni bitų rinkinys
  • -L - tas pats kaip -h
  • -O - ​​failas yra esate savininkas
  • -p - failas egzistuoja ir yra pavadintas vamzdis
  • -r - Failas egzistuoja ir yra įskaitomas
  • -s - failas egzistuoja ir jo dydis yra didesnis nei nulis
  • -S - failas egzistuoja ir yra lizdas
  • -t - failų deskriptorius atidaromas terminale
  • -u - failas egzistuoja ir nustatytas bit-set-user-id
  • -w - failas egzistuoja ir yra įrašomas
  • -x - failas egzistuoja ir yra vykdomąjį

Pavyzdžiai

test / path / to / file1-nt / path / to / file2 && echo "taip"

(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

  • Specialus blokavimas. Failas yra blokinis įrenginys, kuris reiškia, kad duomenys yra skaitomi baitų blokuose. Tai paprastai įrenginiai, pvz., Standieji diskai.
  • Ypatingas simbolis. Failas veikia nedelsiant, kai jį rašote ir dažniausiai yra įrenginys, pvz., Nuoseklusis prievadas

Kintamųjų sąlygų palyginimas

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

Pavyzdžiui, jei gyvūnas turi 4 kojas ir eina "moo", tai tikriausiai yra karvė. Tiesiog patikrinkite 4 kojas negarantuoja, kad turite karvę, bet tikriausiai patikrinsite garsą.

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 ir, jei tai yra tiesa, išvesti eilutę. Pavyzdžiui, jei norite patikrinti, ar egzistuoja failas su pavadinimu "file1.txt" arba 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" 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 rakto pašalinimas

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.