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:
- bandymas - tai reiškia, kad jūs ketinate atlikti palyginimą
- 1 - pirmasis elementas, kurį ketinate palyginti
- -eq (kaip lyginate, šiuo atveju bandote, ar vienas numeris yra lygus kitam)
- 2 - elementas, kurį dar kartą palyginate 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 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:
- -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 -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
- 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, 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