Kuinka käyttää koeolosuhteita Bash-komentosarjan sisällä

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:

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:

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:

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:

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

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