Testauskäskyä voidaan käyttää Linux-komentorivillä vertaamaan yhtä elementtiä toista vastaan, mutta sitä käytetään yleisemmin BASH-komentojonoissa osana ehtoja, jotka ohjaavat logiikkaa ja ohjelmavirtoja.
Perusesimerkki
Voit kokeilla näitä komentoja yksinkertaisesti avaamalla pääteikkunan .
testi 1 -eq 2 && echo "kyllä" || echo "no"
Edellä oleva komento voidaan jakaa seuraavasti:
- testi - tämä tarkoittaa, että olet tekemässä vertailua
- 1 - ensimmäinen elementti aiot vertailla
- -eq (miten verrataan, tässä tapauksessa testat, onko yksi numero yhtä kuin toinen)
- 2 - elementti, jota vertailet ensimmäistä elementtiä uudelleen
- && - suorita seuraava lausunto, jos tulos on tosi
- echo "kyllä" - komento suoritetaan, jos vertailu palaa oikeaksi
- || - suorita seuraava lauseke, jos tulos on väärä
- echo "no" - komento suoritetaan, jos vertailu palautuu vääriksi
Pohjimmiltaan komento vertailee 1: n ja 2: n välillä, ja ne vastaavat kaiun "yes" lauseketta, joka näyttää "kyllä" ja jos ne eivät vastaa kaiun "no" lausuntoa, joka näyttää "ei".
Vertaamalla numeroita
Jos verrataan elementtejä, jotka vertaavat numeroina, voit käyttää seuraavia vertailuoperaattoreita:
- -eq - tekee arvon 1 yhtä arvoa 2
- -ge - on arvo 1 suurempi tai yhtä suuri kuin arvo 2
- -gt - on arvo 1 suurempi kuin arvo 2
- -le - on arvo 1, joka on pienempi tai yhtä suuri kuin arvo 2
- -lt - on arvo 1 pienempi kuin arvo 2
- -ne - arvo 1 ei ole sama arvo 2
esimerkkejä:
testi 1 -eq 2 && echo "kyllä" || echo "no"
(näyttää "ei" näytölle, koska 1 ei ole yhtä suuri kuin 2)
testi 1 -ge 2 && echo "kyllä" || echo "no"
(näyttää "ei" näytölle, koska 1 ei ole suurempi tai yhtä suuri kuin 2)
testi 1 -gt 2 && echo "kyllä" || echo "no"
(näyttää "ei" näytölle, koska 1 ei ole suurempi kuin 2)
testi 1 -le 2 && echo "kyllä" || echo "no"
(näyttää "kyllä" näytölle, koska 1 on pienempi tai yhtä suuri kuin 2)
testi 1 -lt 2 && echo "kyllä" || echo "no"
(näyttää "kyllä" näytölle, koska 1 on pienempi tai yhtä suuri kuin 2)
testi 1 -ne 2 && echo "kyllä" || echo "no"
(näyttää "kyllä" näytölle, koska 1 ei ole yhtä suuri kuin 2)
Tekstin vertailu
Jos verrataan elementtejä, jotka jäsennetään merkkijonoksi, voit käyttää seuraavia vertailuoperaattoreita:
- = - merkkijono 1 vastaa merkkijonoa 2
- ! = - on merkkijono 1 erilainen kuin merkkijono 2
- -n - on merkkijonon pituus suurempi kuin 0
- -z - on merkkijonon pituus 0
esimerkkejä:
test "string1" = "string2" && echo "kyllä" || echo "no"
(näyttää "ei" näytölle, koska "string1" ei ole sama kuin "string2")
test "string1"! = "string2" && echo "kyllä" || echo "no"
(näyttää "kyllä" näytölle, koska "string1" ei ole sama kuin "string2")
test -n "string1" && echo "kyllä" || echo "no"
(näyttää "kyllä" näytölle, koska "merkkijono1" on merkkijonon pituus suurempi kuin nolla)
test -z "string1" && echo "kyllä" || echo "no"
(näyttää "ei" näytölle, koska "merkkijono1" on merkkijonon pituus suurempi kuin nolla)
Tiedostojen vertailu
Jos vertailet tiedostoja, voit käyttää seuraavia vertailuoperaattoreita:
- -ef - Onko tiedostoilla sama laite ja inode-numerot (ovatko ne samat tiedostot)
- -nt - Ensimmäinen tiedosto on uudempi kuin toinen tiedosto
- -ot - Onko ensimmäinen tiedosto vanhempi kuin toinen tiedosto
- -b - Tiedosto on olemassa ja on erikoismerkki
- -c - Tiedosto on olemassa ja se on erikoismerkki
- -d - Tiedosto on olemassa ja se on hakemisto
- -e - tiedosto on olemassa
- -f - Tiedosto on olemassa ja se on tavallinen tiedosto
- -g - tiedosto on olemassa ja sillä on määritetty ryhmän numero
- -G - Tiedosto on olemassa ja käyttäjäryhmän omistaja
- -h - Tiedosto on olemassa ja on symbolinen linkki
- -k - Tiedosto on olemassa ja sen tahmea bittiasetus on
- -L - Sama kuin -h
- -O - Tiedosto on olemassa, olet omistaja
- -p - Tiedosto on olemassa ja nimetty putki
- -r - Tiedosto on olemassa ja on luettavissa
- -s - tiedosto on olemassa ja sen koko on suurempi kuin nolla
- -S - Tiedosto on olemassa ja se on pistorasia
- -t - Tiedostonkuvaaja avataan päätelaitteessa
- -u - Tiedosto on olemassa ja set-user-id-bitti on asetettu
- -w - Tiedosto on olemassa ja se on kirjoitettavissa
- -x - Tiedosto on olemassa ja se on suoritettavissa
esimerkkejä:
test / path / to / file1 -n / polku / tiedosto2 && echo "kyllä"
(Jos tiedosto1 on uudempi kuin tiedosto2, sana "kyllä" tulee näkyviin)
test -e / path / to / file1 && echo "kyllä"
(jos tiedosto1 on olemassa, sana "kyllä" tulee näkyviin)
test -O / path / to / file1 && echo "kyllä"
(jos omistat tiedoston1, näyttöön tulee sana "kyllä")
Terminologia
- Block special - Tiedosto on lohkolaite, joka tarkoittaa, että tietoja luetaan tavuobjekteissa. Nämä ovat yleensä laiteedostoja, kuten kiintolevyjä.
- Merkki erityinen - Tiedosto toimii välittömästi, kun kirjoitat siihen ja se on yleisesti laite, kuten sarjaportti
Useiden ehtojen vertailu
Toistaiseksi kaikki on vertaillut yhtä asiaa vastaan, mutta mitä jos haluat vertailla kahta ehtoa.
Esimerkiksi jos eläin on 4 jalkaa ja menee "moo", se on luultavasti lehmä. Yksinkertainen tarkistaminen 4 jalat ei takaa, että sinulla on lehmä, mutta tarkistaa äänen se tekee varmasti tekee.
Voit testata molempia ehtoja kerralla seuraavasti:
testi 4-eq 4 -a "moo" = "moo" && echo "se lehmä" || kaiku "se ei ole lehmä"
Tärkeä osa tässä on -a, joka tarkoittaa ja.
On olemassa parempi ja yleisemmin käytetty tapa suorittaa sama testi, ja se on seuraava:
testi 4-eq 4 && testi "moo" = "moo" && echo "se on lehmä" || kaiku "se ei ole lehmä"
Toinen testi, jonka haluat tehdä, on verrata kahta lausetta ja jos jompikumpi on oikea, anna merkkijono. Jos haluat esimerkiksi tarkistaa, että tiedostossa "file1.txt" on olemassa tiedostoa tai tiedostoa "file1.doc", voit käyttää seuraavaa komentoa
test -e file1.txt -o -e file1.doc && echo "tiedosto1 on olemassa" || echo "file1 ei ole olemassa"
Tärkeä osa tässä on -o, joka tarkoittaa tai.
On olemassa parempi ja yleisemmin käytetty tapa suorittaa sama testi, ja se on seuraava:
test -e file1.txt || test -e file1.doc && echo "tiedosto1 on olemassa" || echo "file1 ei ole olemassa"
Testisanalyysin poistaminen
Sinun ei todellakaan tarvitse käyttää sanaa testiä vertailua varten. Sinun tarvitsee vain liittää lauseke hakasulkeisiin seuraavasti:
[-e file1.txt] && echo "tiedosto1 on olemassa" || echo "file1 ei ole olemassa"
[Ja] periaatteessa tarkoittaa samaa kuin testi.
Nyt tiedät tämän, että voit parantaa vertailemalla useita ehtoja seuraavasti:
[4-eq 4] && ["moo" = "moo"] && echo "se on lehmä" || kaiku "se ei ole lehmä"
[-e file1.txt] || [-e file1.doc] && echo "tiedosto1 on olemassa" || echo "file1 ei ole olemassa"
Yhteenveto
Testikomento on hyödyllisempi skripteissä, koska voit testata yhden muuttujan arvoa toista vastaan ja ohjata ohjelmavirtaa. Vakiona komentorivillä voit käyttää sitä testata onko tiedosto olemassa tai