tässä opetusohjelmassa, me käydään läpi perusasiat Bash if
julkilausuma ja näyttää, miten käyttää sitä omassa shell-skriptit.
päätöksenteko on yksi tietokoneohjelmoinnin peruskäsitteistä. Kuten mikä tahansa muu ohjelmointikieli, if
, if..else
, if..elif..else
ja sisäkkäisiä if
lausunnot Bash voidaan suorittaa koodia, joka perustuu tiettyyn kunnossa.,
jos lause #
Bash if
ehtolauseita voi olla eri muotoja. Alkeellisinta if
lausunto oli seuraavanlainen:
if TEST-COMMANDthen STATEMENTSfi
if
selvitys alkaa if
avainsana seuraa ehdollinen lauseke ja then
avainsana. Lausuma päättyy fi
avainsanaan.,
– Jos TEST-COMMAND
arvioi True
, STATEMENTS
teloitetaan. Jos TEST-COMMAND
palaa False
mitään ei tapahdu, STATEMENTS
saa jättää huomiotta.
yleensä on hyvä käytäntö, että koodisi aina sisennetään ja erilliset koodilohkot tyhjillä viivoilla. Useimmat ihmiset valitsevat joko 4-tai 2-avaruuden sisennyksen. Painaumat ja tyhjät rivit tekevät koodistasi luettavamman ja järjestelmällisemmän.,
katsotaanpa seuraava esimerkki skripti, joka tarkistaa, onko annettu numero on suurempi kuin 10.
#!/bin/bashecho -n "Enter a number: "read VARif ]then echo "The variable is greater than 10."fi
Tallenna koodi tiedoston ja ajaa sen komentoriviltä:
bash test.sh
käsikirjoitus sinua pyydetään antamaan numero. Jos, esimerkiksi, voit kirjoittaa 15 – test
komento arvioi true
koska 15 on suurempi kuin 10, ja echo
komento sisälle then
lauseke suoritetaan.
The variable is greater than 10.
, jos..,muu Selvitys #
Bash if..else
lausunto oli seuraavanlainen:
if TEST-COMMANDthen STATEMENTS1else STATEMENTS2fi
– Jos TEST-COMMAND
arvioi True
, STATEMENTS1
toteutetaan. Muuten jos TEST-COMMAND
palaa False
, STATEMENTS2
toteutetaan. Lausekkeessa voi olla vain yksi else
lauseke.,
Let ’ s lisätä else
lauseke, kuten edellisessä esimerkissä käsikirjoitus:
Jos et suorita koodi ja syötä numero, skriptin tulee tulostaa eri viesti perustuu, onko numero on suurempi tai pienempi/yhtä suuri kuin 10.
if..elif..muu Selvitys #
Bash if..elif..else
lausunto oli seuraavanlainen:
if TEST-COMMAND1then STATEMENTS1elif TEST-COMMAND2then STATEMENTS2else STATEMENTS3fi
– Jos TEST-COMMAND1
arvioi True
, STATEMENTS1
toteutetaan., Jos TEST-COMMAND2
arvioi True
, STATEMENTS2
toteutetaan. Jos mikään testi komentoja arvioida True
, STATEMENTS2
suoritetaan.
lauseessa voi olla yksi tai useampi elif
lauseke. else
lauseke on valinnainen.
olosuhteet arvioidaan peräkkäin., Kun kunto palaa True
loput ehtoja ei suoriteta ja ohjelman kontrolli siirtyy loppuun if
lausunnot.
Let ’ s lisätä elif
lauseke edelliseen käsikirjoitus:
Sisäkkäisiä jos Julkilausumat #
Bash avulla voit pesä if
lausunnot sisällä if
lausunnot. Voit sijoittaa useita if
lausuman sisällä toinen if
lausunto.,
seuraava skripti kehottaa antamaan kolme numeroa ja tulostaa suurimman luvun kolmen numeron joukosta.
Tässä on, miten lähtö näyttää:
Enter the first number: 4Enter the second number: 7Enter the third number: 27 is the largest number.
case
lausunto sen sijaan sisäkkäiset if
lausunnot.Useita Ehtoja #
loogisia OR
ja AND
toimijoiden avulla voit käyttää useita ehtoja if
lausunnot.,
tässä on toinen versio skriptistä, joka tulostaa suurimman luvun kolmen numeron joukosta. Tässä versiossa, sen sijaan sisäkkäiset if
lausunnot, käytämme loogista AND
(&&
) operaattori.
Testaa Toimijoiden #
Bash, test
komento ottaa yhden seuraavista syntaksin muodossa:
test EXPRESSION]
käsikirjoituksen kannettava, mieluummin käyttää vanha testi [
– komento, joka on käytettävissä kaikissa POSIX-kuoret., Uusi päivitetty versio test
komento [[
(kaksinkertainen suluissa) on tuettu useimmissa nykyaikaisissa järjestelmissä käytetään Bash, Zsh, ja Ksh kuin oletus kuori.
tyhjäksi testi ilme, käyttää loogista NOT
(!
) operaattori. Kun vertaat merkkijonoja, käytä aina yhden tai kahden lainausmerkit välttää sanan jakaminen ja globbing kysymyksiä.,
Alla on muutamia yleisimmin käytetty toimijat:
-
-n
VAR
– Totta jos pituusVAR
on suurempi kuin nolla. -
-z
VAR
– Tosi, josVAR
on tyhjä. -
STRING1 = STRING2
– Totta, josSTRING1
jaSTRING2
ovat tasa-arvoisia. -
STRING1 != STRING2
– Totta, josSTRING1
jaSTRING2
eivät ole tasa-arvoisia., -
INTEGER1 -eq INTEGER2
– True ifINTEGER1
andINTEGER2
are equal. -
INTEGER1 -gt INTEGER2
– True ifINTEGER1
is greater thanINTEGER2
. -
INTEGER1 -lt INTEGER2
– True ifINTEGER1
is less thanINTEGER2
. -
INTEGER1 -ge INTEGER2
– True ifINTEGER1
is equal or greater than INTEGER2. -
INTEGER1 -le INTEGER2
– True ifINTEGER1
is equal or less thanINTEGER2
., -
-h
FILE
– True if theFILE
exists and is a symbolic link. -
-r
FILE
– True if theFILE
exists and is readable. -
-w
FILE
– True if theFILE
exists and is writable. -
-x
FILE
– True if theFILE
exists and is executable., -
-d
FILE
– Tosi, josFILE
olemassa ja se on hakemisto. -
-e
FILE
– Tosi, josFILE
on olemassa, ja on tiedosto, riippumatta tyyppi (solmu, hakemisto, pistorasia, jne.). -
-f
FILE
– Tosi, josFILE
olemassa ja se on tavallinen tiedosto (ole hakemisto tai laite).,
Johtopäätös #
if
, if..else
ja if..elif..else
lausuntojen avulla voit hallita virtaus Bash-skriptin toteutus arvioimalla annettuja ehtoja.