Algaja juhend Shelli skriptide 4 tingimuste ja kui-siis avalduste kohta
Oleme käsitlenud piisavalt skripti skripti juhendeid, mida peaksite eksperimenteerima. Selle nädala järelmaksuga tegeleme mõningate lõbusamate asjade, nagu näiteks tingimuste ja „siis-siis” avaldustega.
Mis on tingimused?
Igapäevases keeles ütleme, et tingimused on nõuded, mida tuleb täita, et midagi juhtuda. Et mu sülearvuti saaks Interneti-ühenduse luua, on mitmeid tingimusi, mis peavad olema täidetud, nagu näiteks Interneti-teenuse pakkuja, modemi ja / või ruuteri sisselülitamine, sülearvuti sisselülitamine jne. nendest nõuetest ei ole täidetud, tulemus - minu sülearvuti internetiühendus - ei juhtu.
Sarnaselt töötavad arvutustehnika vallas. Saame testida, kas string vastab teisele stringile, kas see ei vasta teisele stringile, või isegi kui see üldse olemas on. Samamoodi saame testida arvulisi argumente, et näha, kas keegi on suur, vähem või võrdne teise. Selleks, et pärast testi tingimuste täitmist juhtuks midagi, kasutame “if-then” avaldusi. Nende formaat on üsna lihtne.
kui TINGIMUS
siis
käsk1
käsk2
…
käsk
fi
Kui avaldused
Käivitame kiire väike skript, kas me?
kui test $ 1 -gt $ 2
siis
kaja “$ 1 on suurem kui $ 2”
fi
Märkate, et ainult siis, kui see tingimus on tõene, täidab skript järgmise käsu. Vastasel juhul väljub “if” avaldus. Kui pärast “if” avaldust on käske, siis käivad need tavapäraselt. Selle illustreerimiseks lisasin meie ülaltoodud skripti lõppu järgmise rea.
echo “See tuleb pärast seda, kui avaldus”
Siin on mõned teised numbrilised operaatorid, mida soovite proovida:
- -ekv: võrdne
- -ne: mitte võrdne
- -lt: vähem kui
- -le: vähem või võrdne
- -gt: suurem kui
- -ge: suurem või võrdne
Stringide testimine
Nüüd, kui me muudame meie skripti esimest rida:
kui test $ 1 = $ 2
siis testitakse, kas kaks on võrdsed. Siin on ka saak! Võrdsete märkide (=) kasutamine võrdleb kahte stringi, mitte numbreid. Kui soovite numbreid võrrelda, peate kasutama „-eq” operaatorit sarnaselt ülaltoodud “-gt” kasutamisega.
Nüüd teeme veel ühe muudatuse:
kui test $ 1! = $ 2
Hüüumärgi (!) Lisamine toimib “mitte” modifikaatorina. See tähendab, et see käitab ainult järgmist käsku, kui kaks stringi ei sobi.
Siin on nimekiri mõnedest teistest stringipõhistest testidest, mida saate kasutada:
- string: kasutades lihtsalt argumenti, kui string ei ole tühi (null) või ei ole mingil moel määratletud
- -n string: see testib, kas string ei ole tühi ja on defineeritud
- -z string: see testib, kas string on tühi ja on defineeritud sellisel viisil
Mis veel Ifist?
Ma tunnistan, et selle sektsiooni pealkiri oli kindlasti halb punane. Okei, me teame, kuidas täita käsk, kui test on tõsi, aga mis siis, kui me tahame täita teist käsku, kui see on vale? Me võime need kaks kokku panna, lisades meie „if-then” avaldustele sektsiooni - „muu“!
kui TINGIMUS
siis
käsk1
käsk2
…
käsk
muidu
käsk1
käsk2
…
käsk
fi
Pange kokku lihtne skript.
Seal on kõik, millel on õige sälk. Kui vaatate tähelepanelikult, märkate, et testikäsu asemel kasutasime ruuduklambrid ([ja]). Nad on meie eesmärkidel funktsionaalselt samaväärsed ja te näete tõenäoliselt erinevatel põhjustel ruuduklambrite nägemist, nii et me kasutame neid nüüdsest edasi.
Siin näeb välja, kuidas väljund välja näeb:
See on nii lihtne!
Mida ma nüüd teen?
Nüüd, kui tead, kuidas kasutada “if-then-else” avaldusi, saate käivitada skripte, mis võivad teste teha. Näiteks saate käivitada skripti, mis arvutab faili md5 räsi ja seejärel võrrelda seda failiga allalaaditud failiga, et näha, kas need vastavad.
Mõnede boonuspunktide jaoks saate luua skripti, millel on "for" -tsükkel, kuid kasutab testitingimusi, mitte loendifailist ridade lugemiseks ...
Me jõuame mõnedele huvitavamatele osadele meie algaja juhendis Shelli skriptimiseks. Kui olete eelmised õppetunnid vahele jäänud, on siin kiire nimekiri, mida saate vaadata:
- Shelli skriptimise põhitõed
- Loopide kasutamine
- Rohkem põhilisi käske
- Millised on erinevused Linuxi kestade vahel?
- Kuidas kasutada põhilisi regulaaravaldisi
Kui olete loonud või kasutanud skripte, mis kasutavad testimistingimusi, if-then-else avaldusi ja “for” silmuseid, jaga meiega kommentaarides!