Aloittelijan opas Shell-komentosarjojen kirjoittamiseen 4 Ehtoja ja jos-sitten lausuntoja
Olemme käsitelleet riittävän paljon kuoren komentosarjojen opastuksen perusasioita, joiden pitäisi tuntea olonsa mukavaksi kokeilla. Tämän viikon erässä käsittelemme joitakin hauskempia juttuja, kuten olosuhteita ja "if-then" -lausumia.
Mitkä ovat ehdot?
Jokapäiväisessä kielessä sanomme, että olosuhteet ovat vaatimuksia, jotka on täytettävä, jotta jotain tapahtuu. Jotta kannettava tietokone voisi 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. näistä vaatimuksista ei täyty, tulos - minun kannettava tietokoneeni Internetiin - ei tapahdu.
Edellytykset laskennan alalla toimivat samalla tavalla. Voimme testata, vastaako merkkijono jonkun toisen merkkijonon, onko se toinen merkkijono, tai vaikka se olisi lainkaan. Samoin voimme testata numeerisia argumentteja nähdäksesi, onko joku suuri kuin, vähemmän tai yhtä suuri kuin toinen. Jotta saataisiin tapahtua testin ehtojen täyttymisen jälkeen, käytämme "if-then" -lausumia. Niiden muoto on melko yksinkertainen.
jos EHDOT
sitten
Command1
command2
...
commandn
fi
Jos lausunnot
Suorittakaa nopea pikku testiskripti?
jos testi $ 1 -gt $ 2
sitten
echo “$ 1 on suurempi kuin $ 2”
fi
Huomaa, että vain kun tämä ehto on totta, komentosarja suorittaa seuraavan komennon. Muuten "jos" -lauseke poistuu. Jos "if" -ilmoituksen jälkeen on komentoja, ne suoritetaan normaalisti. Lisäsin seuraavan rivin edellä olevan komentosarjan loppuun sen havainnollistamiseksi:
echo “Tämä tulee sen jälkeen, kun lausuma”
Tässä muutamia muita numeerisia operaattoreita, joita haluat kokeilla:
- -eq: yhtä suuri kuin
- -ne: ei ole yhtä suuri
- -lt: vähemmän kuin
- -le: pienempi tai yhtä suuri kuin
- -gt: suurempi kuin
- -ge: suurempi tai yhtä suuri
Testausmerkkijonot
Jos muutamme komentosarjamme ensimmäistä riviä seuraavasti:
jos testi $ 1 = $ 2
sitten ehto testaa, ovatko kaksi yhtä suuret. Siellä on kuitenkin saalis! Tasa-merkin (=) käyttö vertaa kahta merkkijonoa eikä numeroita. Jos haluat vertailla numeroita, sinun on käytettävä "-eq" -käyttäjää samalla tavalla kuin edellä-"-gt" -käyttäjää käytimme.
Tee nyt toinen muutos:
jos testi $ 1! = $ 2
Huutomerkin (!) Sisällyttäminen toimii "ei" -muuttajana. Toisin sanoen se suorittaa vain seuraavan komennon, kun kaksi merkkijonoa eivät vastaa toisiaan.
Seuraavassa on luettelo joistakin merkkijonoista testeistä, joita voit käyttää:
- merkkijono: käyttää vain argumenttia itsestään, jos merkkijono ei ole tyhjä (null) tai sitä ei ole määritelty jollakin tavalla
- -n string: tämä testaa, onko merkkijono tyhjä eikä määritetty
- -z-merkkijono: tämä testaa, onko merkkijono tyhjä ja määritellään näin
Mitä muuta Ifistä?
Myönnän, että osaston otsikko oli varmasti huono pun. Okei, tiedämme, miten komento suoritetaan, jos testi on totta, mutta mitä jos haluamme suorittaa toisen käskyn, jos se on väärä? Voimme helposti laittaa nämä kaksi yhteen lisäämällä osan "if-then" -lausuntoihimme - "muu"!
jos EHDOT
sitten
Command1
command2
...
commandn
muu
Command1
command2
...
commandn
fi
Let's koota yksinkertainen käsikirjoitus.
On kaikki, jolla on oikea syvennys. Jos tarkastelet tarkasti, huomaat, että käytimme testikomennon sijasta neliösulkeita ([ja]). Ne ovat toiminnallisesti vastaavat tarkoituksiamme, ja olet todennäköisesti todennäköisimmin nähnyt neliön suluissa eri syistä, joten käytämme niitä nyt.
Seuraavassa on tuotos:
Se on niin helppoa!
Mitä teen nyt?
Nyt kun osaat käyttää "if-then-else" -lausekkeita, voit suorittaa skriptejä, jotka voivat suorittaa testejä. Voit esimerkiksi suorittaa komentosarjan, joka laskee tiedoston md5-hajautuksen ja vertaa sitä sitten tiedostoon ladattuun tiedostoon, jotta näet, vastaavatko ne.
Joissakin bonuspisteissä voit luoda komentosarjan, jossa on "for" -silmukka, mutta käyttää testausolosuhteita rivien lukemisen sijaan luettelotiedostosta…
Saamme joitakin mielenkiintoisempia osia Shell Scriptingin aloittelijoiden oppaasta. Jos olet unohtanut aiemmat oppitunnit, tässä on nopea luettelo, josta voit tarkistaa:
- Shell-komentosarjojen perusteet
- Silmukoiden käyttäminen
- Lisää peruskomentoja
- Mitä eroja on Linux-kuorien välillä?
- Perusominaisuuksien käyttäminen
Jos olet tehnyt tai käyttänyt skriptejä, jotka käyttävät testausolosuhteita, jos-toiset-lauseita ja "for" -silmukoita, jaa kanssamme kommenteissa!