Testitingimuste kasutamine Bash-skriptis
The Linuxkatsetada käsk võrdleb üht elementi teisega, kuid seda kasutatakse sagedamini BASH-i kestaskriptid osana tingimuslikud väited mis juhivad loogikat ja programmivoogu.
Põhiline näide

Proovige neid käske sisse terminali aken.
test 1 -eq 2 && kaja "jah" || kaja "ei"
Ülaltoodud käsk jaguneb järgmiselt:
- katsetada: käsk võrdluse tegemiseks
- 1:Esimene element, mida võrrelda. Selles näites on see number 1 kuid see võib olla mis tahes arv või string jutumärkides.
- -ekv: Võrdlusmeetod. Sel juhul testite, kas üks väärtus võrdub teisega.
- 2: element, millega esimest elementi võrdlete. Selles näites on see number 2.
- &&: Linuxi otsetee käskude järjestikku ühendamiseks. Testiahelate väljund järgnevatele käskudele. Topelt-amperand käivitatakse, kui sellele eelneva käsu väljumisolekuks on 0, mis on väljamõeldud viis öelda, et käsk ei ebaõnnestunud.
- kaja "jah": Käsk käivitada, kui võrdlus õnnestub. Sel juhul me ainult küsime kaja käsk, et printida standardväljundisse sõna "jah", kuid siin saate käivitada mis tahes käsu, mis käivitataks, kui testi tulemus osutub tõeseks.
- ||: Teatud mõttes vastupidine &&; topelttoru käivitub ainult siis, kui sellele eelnev käsk ebaõnnestub (selle väljumise olek ei ole 0).
- kaja "ei": Käsk, mis käivitatakse, kui võrdlus ebaõnnestub.
Jookse kooreviipast, katsetada ei tagasta standardväljundile väärtust, vaid tagastab lihtsalt väljumisoleku koodi. Sellepärast on kajakäsu aheldamine vajalik.

Sisuliselt võrdleb käsk 1 ja 2 ja kui need ühtivad, täidetakse kaja "jah" avaldus mis kuvab "jah" ja kui need ei ühti, käivitatakse echo "ei" avaldus, mis kuvab "ei."
Numbrite võrdlemine
Kui võrdlete elemente, mis sõeluvad numbritena, saate kasutada järgmisi võrdlusteateid.
- -ekv: väärtus 1 võrdub väärtusega 2
- -ge: väärtus 1 on väärtusega 2 suurem või sellega võrdne
- -gt: väärtus 1 on suurem kui väärtus 2
- -le: väärtus 1 on väiksem või võrdne väärtusega 2
- -lt: väärtus 1 väiksem kui väärtus 2
- - ei: väärtus 1 ei võrdu väärtusega 2
Näidistestid
test 1 -eq 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "ei", sest 1 ei võrdu 2-ga)
test 1 -ge 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "ei", kuna 1 ei ole suurem või võrdne 2-ga)
test 1 -gt 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "ei", sest 1 ei ole suurem kui 2)
test 1 -le 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "jah", kuna 1 on väiksem kui 2 või sellega võrdne)
test 1 -lt 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "jah", kuna 1 on väiksem kui 2 või sellega võrdne)
test 1 -ne 2 && kaja "jah" || kaja "ei"
(kuvab ekraanile "jah", sest 1 ei võrdu 2-ga)
Teksti võrdlemine
Kui võrdlete stringidena sõeluvaid elemente, kasutage järgmisi võrdlusoperaatoreid.
- =: string 1 vastab stringile 2
- !=: string 1 ei ühti stringiga 2
- -n: stringi pikkus on suurem kui 0
- -z: stringi pikkus võrdub 0-ga
Näited
test "string1" = "string2" && kaja "jah" || kaja "ei"
(kuvab ekraanile "ei", kuna "string1" ei võrdu "string2")
test "string1" != "string2" && kaja "jah" || kaja "ei"
(kuvab ekraanile "jah", kuna "string1" ei võrdu "string2")
test -n "string1" && kaja "jah" || kaja "ei"
(kuvab ekraanile "jah", kuna "string1" stringi pikkus on suurem kui null)
test -z "string1" && kaja "jah" || kaja "ei"
(kuvab ekraanile "ei", kuna "string1" stringi pikkus on suurem kui null)
Failide võrdlemine
Failide võrdlemisel kasutage järgmisi võrdlusoperaatoreid.
- -ef: failidel on sama seadme ja inode numbrid (kas need on samad failid)
- -nt: esimene fail on teisest uuem
- -ot: esimene fail on teisest vanem
- -b: fail on olemas ja on plokk eriline
- -c: fail on olemas ja on tegelane eriline
- -d: fail on olemas ja see on kataloog
- -e: fail on olemas
- -f: fail on olemas ja see on tavaline fail
- -g: fail on olemas ja sellel on määratud rühmanumber
- -G: fail on olemas ja selle omanik on kasutajate rühm
- -h või -L: fail on olemas ja on a sümboolne link
- -k: fail on olemas ja sellele on määratud kleepuv bitt
- -O: fail on olemas, olete selle omanik
- -lk: fail on olemas ja see on nimega toru
- -r: fail on olemas ja loetav
- -s: fail on olemas ja selle suurus on suurem kui null
- -S: fail on olemas ja on a pistikupesa
- -t: faili deskriptor avatakse a terminal
- -u: fail on olemas ja set-user-id bitt on määratud
- -w: fail on olemas ja seda saab kirjutada
- -x: fail on olemas ja käivitatav
Näited
test /tee/faili1 -nt /tee/faili2 && kaja "jah"
(Kui fail1 on uuem kui fail2, siis kuvatakse sõna "jah")
test -e /tee/faili1 && kaja "jah"
(kui fail1 on olemas, kuvatakse sõna "jah")
test -O /tee/faili1 && kaja "jah"
(kui teil on fail1, kuvatakse sõna "jah")
Spetsiaalne plokk: fail on plokkseade, mis tähendab, et andmeid loetakse baitide kaupa. Tavaliselt on need seadmefailid, näiteks kõvakettad.
Iseloom eriline: failile kirjutatakse kohe toimingud ja see on tavaliselt seade, näiteks jadaport
Mitme tingimuse võrdlemine
Siiani on kõik võrrelnud üht asja teisega, aga mis siis, kui soovite võrrelda kahte tingimust?
Näiteks kui loomal on neli jalga ja ta läheb "moo", on see tõenäoliselt lehm. Lihtsalt nelja jala kontrollimine ei garanteeri, et teil on lehm, kuid selle heli kontrollimine teeb seda kindlasti.
Mõlema tingimuse korraga testimiseks kasutage järgmist lauset:
test 4 -eq 4 -a "moo" = "moo" && echo "see on lehm" || kaja "see pole lehm"
Peamine osa on siin -a lipp, mis tähistab ja.
Sama testi tegemiseks on parem ja sagedamini kasutatav viis, mis on järgmine:
test 4 -eq 4 && test "moo" = "moo" && kaja "see on lehm" || kaja "see pole lehm"
Jälgi oksi!
Hargnemine katsetada käsk on oluline. Kui esimene test (4 = 4) ebaõnnestub, katsetada käsk lõpeb nullist erineva väljumiskoodiga. Seega hüppame kahetoru sümboli juurde ja "see pole lehm" prindib standardväljundisse. Kui aga esimene katse õnnestub ja nii katsetada tulemuseks on väljumiskood 0, siis hüppame esimese topelt-Ampersandi juurde. See järgmine väide on veel üks katsetingimus!
Kui teine katse ebaõnnestub, hüppame jällegi topelttoru juurde ja jätkame sealt. Kui aga teine test õnnestub, liigume teise topelt-A-lause juurde, mis on sisse lülitatud see näide kordab lihtsalt "see on lehm" standardväljundile ja lõpeb seejärel tagasi kestaga viip.
Teises testis võrreldakse kahte väidet ja kui kumbki on tõene, väljastatakse string. Näiteks selleks, et kontrollida, kas fail nimega "file1.txt" või fail nimega "file1.doc" on olemas, saate kasutada järgmist käsku:
test -e fail1.txt -o -e fail1.doc && echo "fail1 on olemas" || echo "faili1 pole olemas"
Peamine osa on siin -o mis tähistab või.
Sama testi tegemiseks on parem ja sagedamini kasutatav viis, mis on järgmine:
test -e fail1.txt || test -e file1.doc && echo "fail1 on olemas" || echo "faili1 pole olemas"
Testi märksõna kõrvaldamine
Tegelikult ei pea te seda sõna kasutama katsetada võrdluse teostamiseks. Kõik, mida pead tegema, on lisada avaldus nurksulgudesse järgmiselt:
[ -e fail1.txt ] && kajab "fail1 on olemas" || echo "faili1 pole olemas"
The [ ja ] tähendab põhimõtteliselt sama mis katsetada.
Nüüd teate, et saate mitme tingimuse võrdlemisel parandada järgmist.
[ 4 -eq 4 ] && [ "moo" = "moo" ] && kaja "see on lehm" || kaja "see pole lehm"
[ -e fail1.txt ] || [ -e fail1.doc ] && echo "fail1 on olemas" || echo "faili1 pole olemas"
Kokkuvõte
Testimiskäsk on skriptides kasulikum, kuna saate testida ühe muutuja väärtust teisega ja juhtida programmi voogu. Kasutage seda käsureal, et testida, kas fail on olemas või mitte.