Skip to main content

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

Nonviolence and Peace Movements: Crash Course World History 228 (Kesäkuu 2026)

Nonviolence and Peace Movements: Crash Course World History 228 (Kesäkuu 2026)
Anonim

Testauskäskyä voidaan käyttää Linux-komentorivillä vertaamaan yhtä elementtiä toista, 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, jonka aiot vertailla
  • -eq - Miten verrataan. Tässä tapauksessa testaat, onko yksi numero yhtä kuin toinen.
  • 2 - Elementti, jota vertailet ensimmäistä elementtiä
  • && - Suorita seuraava lausunto, jos tulos on tosi
  • echo "kyllä" - komento suoritetaan, jos vertailu palauttaa true
  • || - Suorita seuraava lausuma, jos tulos on väärä
  • echo "no" - komento suoritettavaksi, jos vertailu palautuu vääriksi

Pohjimmiltaan komento vertailee 1-2: tä ja jos ne vastaavat, niin echo "yes" -esitys suoritetaan, joka näyttää "kyllä" ja jos ne eivät täsmää, echo "no" -esitys suoritetaan, 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

esimerkit

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 elementejä, jotka jäsentää 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

esimerkit

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

esimerkit

test / path / to / file1 -nt / polku / to / file2 && 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 toisen kanssa, mutta entä jos haluat vertailla kahta ehtoa?

Esimerkiksi jos eläin on 4 jalkaa ja menee "moo", se on luultavasti lehmä. Yksinkertainen tarkistaminen 4 jalalle ei takaa, että sinulla on lehmä, mutta tarkistaa äänen, jonka se tekee varmasti.

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 jokin on totta, anna merkkijono. Jos esimerkiksi haluat tarkistaa, että tiedostossa on tiedosto "file1.txt" tai tiedostolla "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ärkein 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"

Testa-avainsanan 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 sen avulla testata onko tiedosto olemassa vai ei.