If-Koubou

Aloittelijan opas Shell Scripting 4: Ehdot ja jos-Sitten lausunnot

Aloittelijan opas Shell Scripting 4: Ehdot ja jos-Sitten lausunnot (Miten)

Olemme käsitelleet tarpeeksi perusohjeita komentosarjojen komentosarjassa, että sinun pitäisi kokea mukavasti kokeilemalla. Tämän viikon erässä käsittelemme joitakin hauskemmista tavaroista, kuten olosuhteista ja "jos-sitten" -lausumista.

Mitä ovat olosuhteet?

Tavallisessa kielessä sanomme, että olosuhteet ovat vaatimuksia, jotka täytyy täyttää jotain tapahtua. Jotta kannettava tietokone voisivat muodostaa yhteyden internetiin, on olemassa useita ehtoja, jotka on täytettävä, kuten internet-palveluntarjoajan, modeemin ja / tai reitittimen ollessa päällä, kannettavan tietokoneen ollessa päällä jne. Se on melko yksinkertainen ja jos jokin näistä vaatimuksista ei ole täytetty, tulos - minun kannettava tietokone yhdistyvät internetiin - ei tapahdu.

Tietojenkäsittelyolosuhteet toimivat samalla tavoin. Voimme testata, vastaako merkkijono toiseen merkkijonoon, eikö se vastaa toista merkkijonoa tai vaikka se olisi lainkaan olemassa. Samoin voimme testata numeerisia argumentteja nähdäksesi, onko jokin suuri, vähemmän tai yhtä suuri kuin toinen. Jos jotain tapahtuu, kun testin edellytykset täyttyvät, käytämme "if-then" -lausuntoja. Heidän muodonsa on melko yksinkertainen.

jos CONDITION
sitten
Command1
command2

commandn
fi

Jos lausunnot

Käynnistetään nopea pikakohde, eihän me?

jos testataan $ 1 - $ 2
sitten
echo "$ 1 on suurempi kuin $ 2"
fi

Huomaat, että vain kun tämä ehto on tosi, komentosarja suorittaa seuraavan komennon. Muussa tapauksessa "if" -lausuma poistuu. Jos komentoja "if" -käskyn jälkeen, ne suoritetaan normaalisti. Lisäsin seuraava rivi edellä mainitun käsikirjoituksen loppuun tämän havainnollistamiseksi:

echo "Tämä tulee kun if lausuma"

Seuraavassa on muutamia numeerisia operaattoreita, jotka kannattaa kokeilla:

  • -eq: yhtä kuin
  • -ne: ei vastaa
  • -lt: alle
  • -le: pienempi tai yhtä suuri kuin
  • -gt: suurempi kuin
  • -ge: suurempi tai yhtä suuri kuin

Testauskielet

Nyt, jos muokkaamme komentojamme ensimmäistä riviä olevan tämä:

jos testissä $ 1 = $ 2

sitten ehto testaa, jos nämä kaksi ovat yhtä suuret. Siinä on saalis täällä! Yhden merkin (=) käyttö vertaa kahta merkkijonoa eikä numeroita. Jos haluat vertailla numeroita, sinun on käytettävä "-eq" -operaattoria samalla tavoin kuin käytimme yllä olevaa "-gt" -tapaa.

Tehdään nyt toinen muutos:

jos testissä $ 1! = $ 2

Kutsuhuutomerkin (!) Sisällyttäminen ei ole "modifioija". Eli se suorittaa vain seuraavan komennon, kun kaksi merkkijonoa ei täsmää.

Seuraavassa on luettelo useista merkkijonoista testeistä, joita voit käyttää:

  • merkkijono: käytä vain argumenttia itsestään, jos merkkijono ei ole tyhjää (null) tai sitä ei ole määritelty jollakin tavalla
  • -n-merkkijono: tämä testaa, jos merkkijono ei ole tyhjä ja määritelty
  • -z-merkkijono: tämä testaa, jos merkkijono on tyhjä ja määritellään tällä tavalla

Mitä muuta jos?

Myönnän, että osion otsikko oli varmasti huono pun. Okei, tiedämme, miten suorittaa komento, jos testi on tosi, mutta mitä jos haluamme suorittaa toisen komennon, jos se on väärä? Voimme helposti laittaa molemmat yhteen lisäämällä osiota "jos-sitten" -lausuntoihin - "muuhun"!

jos CONDITION
sitten
Command1
command2

commandn
muu
Command1
command2

commandn
fi

Kokoamme yksinkertaisen käsikirjoituksen.

Kaikissa on oikea sisennys. Jos tarkastelet tarkasti, huomaat, että käytimme hakasulkeita ([ja]) testikomennon sijaan. Ne ovat toiminnallisesti vastaavia tavoitteitamme, ja sinun on paljon todennäköisempää nähdä hakasulkeet eri syistä, joten käytämme niitä nyt.

Seuraavassa on esimerkki tuotoksesta:

Se on niin helppoa!

Mitä teen nyt?

Nyt kun osaat käyttää "if-then-else" -lausuntoja, voit suorittaa skriptit, jotka voivat suorittaa testejä. Voit esimerkiksi suorittaa komentosarjan, joka laskee tiedoston md5-hajautuksen ja sitten vertaa sitä tiedostoon, jonka olet ladannut tiedostoon, ja tarkista, vastaavatko ne.

Joillekin bonuspisteille voit luoda komentosarjan, jolla on "for" -silmukka, mutta käyttää testiolosuhteita sen sijaan, että lukisi viivoja luettelotiedostosta ...

Saamme joitakin mielenkiintoisempia osia Aloittelijan Shell-komentosarjan oppaassa. Jos olet unohtanut aiemmat oppitunnit, tässä on nopea luettelo, jolla voit tarkistaa:

  1. Shellin komentosarjan perusteet
  2. Käytetään silmukoita varten
  3. Lisää peruskomentoja
  4. Mitkä ovat Linux-kuoren eroja?
  5. Kuinka käyttää tavallisia säännöllisiä lausekkeita

Jos olet tehnyt tai käyttänyt skriptejä, jotka käyttävät testausehtoja, jos-sitten-muut lausunnot ja "varten" silmukoita, jaa meille huomautuksissa!