Testkäsku saab kasutada Linuxi käsureal, et võrrelda ühte elementi teisega, kuid seda kasutatakse sagedamini BASH-shelli skriptides osana tingimuslikest avaldustest, mis kontrollivad loogikat ja programmi voogu.
Põhinäide
Nende käskude abil saate lihtsalt avada terminali akna .
test 1 -qq 2 && echo "jah" || echo "no"
Eespool toodud käsu võib jagada järgmiselt:
- test - see tähendab, et te kavatsete teha võrdlust
- 1 - esimene element, mida te võrdlete
- -eq (kuidas võrrelda, sel juhul proovite, kas üks number võrdub teisega)
- 2 - element, millega te võrdlete esimest elementi uuesti
- && - käivitage järgmine avaldus, kui tulemus on tõene
- echo "yes" - käsk käivitamiseks, kui võrdlus tõeneb
- || - käivitage järgmine väide, kui tulemus on vale
- echo "no" - käsu käivitada, kui võrdlus tagastab vale
Põhimõtteliselt käsk võrdleb 1 kuni 2 ja need vastavad echo "jah" avaldusele, mis kuvab "jah" ja kui need ei ühti kaja "no" avaldusega, mis kuvab "ei".
Numbrite võrdlemine
Kui võrdlete elemente, mis parsitakse numbritega, võite kasutada järgmisi võrdlusoperaate:
- -eq - väärtus 1 võrdväärne väärtus 2
- -ge - väärtus 1 suurem või võrdne väärtusega 2
- -gt - väärtus 1 suurem kui väärtus 2
- -le - väärtus 1 väiksem või võrdne väärtusega 2
- -lt - väärtus 1 on väiksem kui väärtus 2
- -ne - väärtus 1 ei ole võrdne väärtus 2
Näited:
test 1 -qq 2 && echo "jah" || echo "no"
(kuvab ekraanile "ei", sest 1 ei võrdu 2)
test 1 -ge 2 && echo "jah" || echo "no"
(kuvatakse ekraanile "ei", sest 1 ei ole suurem või võrdne 2-ga)
test 1 -gt 2 && echo "jah" || echo "no"
(kuvatakse ekraanile "ei", sest 1 ei ole suurem kui 2)
test 1-le 2 && echo "jah" || echo "no"
(kuvatakse ekraanile "jah", kuna 1 on väiksem või võrdne 2)
test 1 -lt 2 && echo "jah" || echo "no"
(kuvatakse ekraanile "jah", kuna 1 on väiksem või võrdne 2)
test 1 -ne 2 && echo "jah" || echo "no"
(kuvatakse ekraanile "jah", sest 1 ei võrdu 2)
Teksti võrdlemine
Kui võrrelda elemente, mis parsivad stringidena, võite kasutada järgmisi võrdlusoperaate:
- = - kas string 1 vastab string 2
- ! = - string 1 erineb stringist 2
- -n - stringi pikkus on suurem kui 0
- -z - stringi pikkus 0
Näited:
test "string1" = "string2" && echo "jah" || echo "no"
(kuvab ekraanile "ei", sest string1 ei võrdu "string2")
test "string1"! = "string2" && echo "jah" || echo "no"
(kuvatakse ekraanile "jah", sest string1 ei võrdu "string2")
test -n "string1" && echo "jah" || echo "no"
(kuvatakse ekraanile "jah", sest stringi 1 stringi pikkus on nullist suurem)
test -z "string1" && echo "jah" || echo "no"
(kuvatakse ekraanile "ei", sest stringi 1 stringi pikkus on nullist suurem)
Failide võrdlemine
Kui võrreldate faile, võite kasutada järgmisi võrdlusoperaate:
- -ef - Kas failidel on sama seadme ja inode numbrid (kas need on samad failid)
- -nt - on esimene fail uuem kui teine fail
- -ot - Kas esimene fail on teise faili jaoks vanem
- -b - fail on olemas ja on plokk eriline
- -c - fail on olemas ja on iseloomu eriline
- -d - fail on olemas ja see on kataloog
- -e - fail on olemas
- -f - Fail on olemas ja on tavaline fail
- -g - fail on olemas ja sellel on määratud rühma number
- -G - fail on olemas ja omanik on kasutajagrupp
- -h - fail on olemas ja on sümboolne link
- -k - fail on olemas ja selle kleepuv bitt on määratud
- -L - Sama nagu -h
- -O - fail on olemas, oled sa omanik
- -p - fail on olemas ja see on nimega toru
- -r - fail on olemas ja see on loetav
- -s - fail on olemas ja selle suurus on suurem kui null
- -S - fail on olemas ja on pistikupesa
- -t - failide deskriptor avatakse terminalil
- -u - Fail on olemas ja set-user-id bit on seatud
- -w - fail on olemas ja see on kirjutatav
- -x - fail on olemas ja käivitatav
Näited:
test / path / to / file1 -n / path / to / file2 && echo "jah"
(Kui fail1 on uuem kui file2, siis kuvatakse sõna "jah")
test -e / path / to / file1 && echo "jah"
(kui fail1 on olemas, kuvatakse sõna "jah")
test -O / tee / to / file1 && echo "jah"
(kui oled file1, siis kuvatakse sõna "jah")
Terminoloogia
- Blokeeri eriline - fail on blokeerimisseade, mis tähendab, et andmeid loetakse baitide plokkides. Need on tavaliselt seadmefailid nagu kõvakettad.
- Tähemärgi eripära. Faili käivitatakse kohe, kui sellele kirjutad, ja tavaliselt on see seade nagu jadaport
Mitme tingimuse võrdlus
Siiani on kõik võrdlenud üks asi teisega, aga kui tahad võrrelda kahte tingimust.
Näiteks kui loomal on 4 jalga ja läheb "moo", on see ilmselt lehm. Lihtsalt kontrollida 4 jalga ei garanteeri, et teil on lehm, kuid kindlasti kontrollib seda heli.
Mõlema tingimuse katsetamiseks korraga kasutage järgmist avaldust:
test 4 -equ 4 -a "moo" = "moo" && echo "see on lehm" || echo "see pole lehm"
Peamine osa siin on -a, mis tähistab ja.
Parem ja sagedamini kasutatav viis sama testi sooritamiseks on järgmine:
test 4-eks 4 & & test "moo" = "moo" && echo "see on lehm" || echo "see pole lehm"
Teine test, mida võiksite teha, on kahe avalduse võrdlemine ja kas mõni tõeline väljund on string. Näiteks kui soovite kontrollida, kas on olemas fail nimega "file1.txt" või on olemas fail nimega "file1.doc", võite kasutada järgmist käsku
test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 ei eksisteeri"
Peamine osa siin on -o, mis tähistab või.
Parem ja sagedamini kasutatav viis sama testi sooritamiseks on järgmine:
test -e file1.txt || test-e file1.doc && echo "file1 exists" || echo "file1 ei eksisteeri"
Katse märksõna kõrvaldamine
Võrdluse tegemiseks ei pea te tegelikult sõna katse kasutama. Kõik, mida peate tegema, on lisada avaldus nurksulgudes järgmiselt:
[-e file1.txt] && echo "file1 exists" || echo "file1 ei eksisteeri"
[Ja] tähendab põhimõtteliselt sama mis testi.
Nüüd teate seda, et saate parandada mitmete tingimuste võrdlemist järgmiselt:
[4-tabel 4] && ["moo" = "moo"] && echo "see on lehm" || echo "see pole lehm"
[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 ei eksisteeri"
Kokkuvõte
Katse käsk on skriptidelt kasulikum, sest saate testida ühe muutuja väärtust teise ja kontrollprogrammi voolu suhtes. Tavalises käsureal saab seda kasutada, et kontrollida, kas fail on olemas või