Bash-komentosarjat – If-lause
Bash on komentokielten tulkki. Se on oletuskomentotulkki useimmissa GNU/ Linux-järjestelmät ja se on laajalti saatavilla eri käyttöjärjestelmissä. Nimi on lyhenne sanoista Bourne-Again SHell . Komentosarja mahdollistaa sellaisten käskyjen suorittamisen, jotka muuten suoritettaisiin yksitellen interaktiivisesti.
Tässä artikkelissa keskustelemme if-lauseesta bash-komentosarjassa.
Bash If -lausunto
Bashin if-lauseen perussyntaksi:
#!/bin/bash if [ condition ]; then # code to be executed if the condition is true fi
Selitys:
-
if [ condition ]; then>: Tämä rivi aloittaa if-lauseen missäcondition>on lauseke, joka arvioidaan. Jos ehto on tosi, koodi sisälläthen>lohko suoritetaan. -
# code to be executed if the condition is true>: Tämä on koodilohko, joka suoritetaan, jos if-lauseessa määritetty ehto on tosi. -
fi>: Tämä merkitsee if-lauseen loppua.
Bash-skripti määrittää, onko luku parillinen
Seuraava on esimerkki käsikirjoitus joka pyytää sinua syöttämään luvun ja tarkistaa sitten, onko annettu luku parillinen.
#!/usr/bin/bash
# Tämä komentosarja kehottaa käyttäjää syöttämään numeron, tarkistaa, onko se parillinen, ja tulostaa viestin vastaavasti.
# Kehota käyttäjää syöttämään numeroecho -n Syötä numero:
lue x# Tarkista, onko syötetty numero parillinen
jos [ $((x % 2)) == 0 ]; sitten
kaikunumero on parillinen
olla
Selitys:
-
#!/usr/bin/bash>: Tämä on shebang-rivi, joka määrittää polun Bash-tulkkiin. Se osoittaa, että komentosarja tulee suorittaa Bashilla. -
echo -n 'Enter Number: '>: Tämä rivi tulostaa kehotteen Enter Number: ilman rivinvaihtomerkkiä (-n>vaihtoehto). Se odottaa, että käyttäjä syöttää numeron. -
read x>: Lukee käyttäjän syötteen ja määrittää sen muuttujallex>. -
if [ $((x % 2)) == 0 ]; then>: Tämä rivi tarkistaa, onko syötetyn luvun jaon loppuosa (x>) luvulla 2 on yhtä kuin 0. Jos tosi, se tarkoittaa, että luku on parillinen. -
echo 'Number is Even'>: Jos if-lauseen ehto on tosi, tämä rivi tulostaa konsoliin Numero on parillinen.
Lähtö:
Bash-skripti määrittää, onko luku parillinen
Huomautus: Skripti ei käsittele tapauksia, joissa käyttäjä syöttää ei-numeerisen arvon. Jos käyttäjä syöttää ei-numeerisen arvon, se voi tuottaa odottamattomia tuloksia. Tämän korjaamiseksi voidaan lisätä ylimääräinen syötteen validointi.
Bash if-else -lausunto
Bashin if-else-lauseen perussyntaksi:
#!/bin/bash
jos [ehto ]; sitten
# koodi, joka suoritetaan, jos ehto on tosi
muu
# koodi, joka suoritetaan, jos ehto on epätosi
olla
Selitys:
-
if [ condition ]; then>: Tämä rivi aloittaa if-lauseen missäcondition>on lauseke, joka arvioidaan. Jos ehto on tosi, koodi sisälläthen>lohko suoritetaan. -
# code to be executed if the condition is true>: Tämä on koodilohko, joka suoritetaan, jos if-lauseessa määritetty ehto on tosi. -
else>: Jos if-lauseen ehto on epätosi, koodin sisällä oleva koodielse>lohko suoritetaan. -
# code to be executed if the condition is false>: Tämä on koodilohko, joka suoritetaan, jos if-käskyssä määritetty ehto on epätosi. -
fi>: Tämä merkitsee if-else-lauseen loppua.
Kuinka löytää suurempi määrä käyttämällä if-else-lauseita Bash-skriptissä?
Tässä on Bash-komentosarja, jonka avulla saat selville suuremman määrän käyttämällä if-else-lausetta Bash Scriptissa.
#!/bin/bash
# Kehota käyttäjää syöttämään x:n arvoecho -n Syötä x:n arvo:
lue xjos [ $x -gt 5 ]; sitten
echo x on suurempi kuin 5
muu
echo x ei ole suurempi kuin 5
olla
Selitys:
- #!/bin/bash : Tätä riviä kutsutaan shebangiksi ja se osoittaa, että komentosarja tulee tulkita ja suorittaa Bash-kuoren avulla.
- # Kehota käyttäjää syöttämään x:n arvo : Tämä on kommentti, joka osoittaa seuraavan rivin tarkoituksen.
- echo -n Syötä x:n arvo: : Tämä rivi tulostaa viestin Syötä x:n arvo päätteeseen siirtymättä seuraavalle riville. Käyttäjä syöttää arvonsa samalle riville.
- lue x : Tämä rivi lukee käyttäjän syötteen ja määrittää sen muuttujalle 'x'.
- jos [ $x -gt 5 ]; sitten : Tämä on if-lause, joka tarkistaa, onko 'x':n arvo suurempi kuin 5.
- $x : Edustaa muuttujan 'x' arvoa.
- -gt : tarkoittaa suurempaa kuin numeerisen vertailun yhteydessä.
- 5 : Arvoa verrataan.
- echo x on suurempi kuin 5 : Jos edellisen rivin ehto on tosi, tämä rivi suoritetaan, tulostetaan x on suurempi kuin 5 päätteelle.
- muu : Jos if-lauseen ehto on epätosi, komentosarja hyppää else-lohkoon.
- echo x ei ole suurempi kuin 5 : Tämä rivi suoritetaan, jos 'x':n arvo ei ole suurempi kuin 5, tulostuksen x ei ole suurempi kuin 5 päätteelle.
- olla : Tämä tarkoittaa if-else-lohkon loppua.
Lähtö:
Suuremman luvun etsiminen if-else-toiminnolla
Bash if-elif-else lausunto
The if-elif-else> Bashin lauseketta käytetään ehdolliseen haarautumiseen. Sen avulla voit määrittää useita ehtoja ja suorittaa erilaisia koodilohkoja näiden ehtojen arvioinnin perusteella.
Bashin if-elif-else -lauseen perussyntaksi:
#!/bin/bash
jos [ehto1]; sitten
# Suoritettava koodi, jos ehto1 on tosi
elif [ehto2]; sitten
# Suoritettava koodi, jos ehto2 on tosi
elif [ehto3]; sitten
# Suoritettava koodi, jos ehto3 on tosi
muu
# Suoritettava koodi, jos mikään ehdoista ei täyty
olla
Selitys:
- jos [ehto1]; sitten : Tämä on aloituskohta
if-elif-else>lausunto. Tämän lohkon koodi suoritetaan, joscondition1>on totta. - # Suoritettava koodi, jos ehto1 on tosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition1>on totta. - elif [ehto2]; sitten : Jos
condition1>on epätosi, skripti tarkistaacondition2>. Joscondition2>on totta, tämän lohkon koodi suoritetaan. - # Suoritettava koodi, jos ehto2 on tosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition2>on totta. - elif [ehto3]; sitten : Jos molemmat
condition1>jacondition2>ovat vääriä, skripti tarkistaacondition3>. Joscondition3>on totta, tämän lohkon koodi suoritetaan. - # Suoritettava koodi, jos ehto3 on tosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition3>on totta. - muu : Jos mikään edellisistä ehdoista (ehto1, ehto2, ehto3 jne.) ei ole tosi, koodi
else>lohko suoritetaan. - # Suoritettava koodi, jos mikään ehdoista ei täyty : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos mikään ehdoista ei täyty.
- olla : Tämä merkitsee loppua
if-elif-else>lausunto. Sana fi on kirjoitettu taaksepäin ja sitä käytetään sulkemaan ehdolliset lohkot Bashissa.
Kuinka selvittää, onko luku positiivinen, negatiivinen vai nolla käyttämällä 'if-elif-else' -lausetta Bashissa?
Lisätään koodia yllä olevassa esimerkissä ja lisätään ehto nollan tarkistamiseksi.
#!/bin/bash
# Kehota käyttäjää syöttämään numero
echo -n Syötä numero:
lue numerojos [ $num -gt 0 ]; sitten
echo $num on positiivinen luku.
elif [ $num -lt 0 ]; sitten
echo $num on negatiivinen luku.
muu
echo $num on nolla.
olla
Selitys:
- #!/bin/bash : Tämä rivi on shebang, joka osoittaa, että komentosarja tulee tulkita ja suorittaa Bash-kuoren avulla.
- # Kehota käyttäjää syöttämään numero : Tämä on kommentti, joka osoittaa seuraavan rivin tarkoituksen.
- echo -n Syötä numero: : Tämä rivi tulostaa viestin Syötä numero: päätteeseen siirtymättä seuraavalle riville. Käyttäjä syöttää numeronsa samalle riville.
- lue numero : Tämä rivi lukee käyttäjän syötteen ja määrittää sen muuttujaan 'num'.
- jos [ $num -gt 0 ]; sitten : Tämä on if-lause, joka tarkistaa, onko 'num':n arvo suurempi kuin 0.
- $num : Edustaa muuttujan 'num' arvoa.
- -gt : tarkoittaa suurempaa kuin numeerisen vertailun yhteydessä.
- 0 : Arvoa verrataan.
- echo $num on positiivinen luku. : Jos edellisen rivin ehto on tosi, tämä rivi suoritetaan, tulos $num on positiivinen luku. terminaaliin.
- elif [ $num -lt 0 ]; sitten : Jos if-lauseen ehto on epätosi, tämä rivi tarkistaa, onko 'num':n arvo pienempi kuin 0.
- $num : Edustaa muuttujan 'num' arvoa.
- -lt : tarkoittaa vähemmän kuin numeerisen vertailun yhteydessä.
- 0 : Arvoa verrataan.
- echo $num on negatiivinen luku. : Jos elif-lauseen ehto on tosi, tämä rivi suoritetaan, tulos $num on negatiivinen luku. terminaaliin.
- muu : Jos sekä if- että elif-lauseiden ehdot ovat epätosi, komentosarja hyppää else-lohkoon.
- echo $num on nolla. : Tämä rivi suoritetaan, jos 'num'-arvo ei ole suurempi kuin 0 ja vähintään 0, tulostettaessa $num on nolla. terminaaliin.
- olla : Tämä tarkoittaa if-elif-else -lohkon loppua.
Lähtö:
jos Luku on positiivinen, negatiivinen tai nolla. Käytä 'jos-elif-else' -funktiota
Bash Nested if -lausunto
Bashissa voit käyttää sisäkkäistä if> lauseita monimutkaisempien ehdollisten rakenteiden luomiseksi. Tässä on sisäkkäisen tekstin syntaksi if> lausunto:
#!/bin/bash
jos [ehto1]; sitten
# Suoritettava koodi, jos ehto1 on tosi
jos [ehto2]; sitten
# Suoritettava koodi, jos ehto2 on tosi
muu
# Suoritettava koodi, jos ehto2 on epätosi
olla
muu
# Suoritettava koodi, jos ehto1 on epätosi
olla
Selitys:
- jos [ehto1]; sitten : Tämä on ulompi
if>lausunto. Joscondition1>on totta, tämän lohkon sisällä oleva koodi suoritetaan. - # Suoritettava koodi, jos ehto1 on tosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition1>on totta. - jos [ehto2]; sitten : Ulkopuolen lohkon sisällä
if>lausunto, on sisäinenif>lausunto. Joscondition2>on totta, tämän lohkon sisällä oleva koodi suoritetaan. - # Suoritettava koodi, jos ehto2 on tosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition2>on totta. - muu : Jos
condition2>sisäpuolellaif>lausunto on väärä, koodi sisälläelse>sisäosan lohkoif>lausunto suoritetaan. - # Suoritettava koodi, jos ehto2 on epätosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition2>on väärä. - olla : Tämä merkitsee sisäosan loppua
if>lausunto. - muu : Jos
condition1>ulkonaif>lausunto on väärä, koodi sisälläelse>ulomman lohkoif>lausunto suoritetaan. - # Suoritettava koodi, jos ehto1 on epätosi : Korvaa tämä kommentti todellisella koodilla, jonka haluat suorittaa, jos
condition1>on väärä. - olla : Tämä merkitsee ulkopuolen loppua
if>lausunto.
Kuinka tarkistaa ikäkelpoisuus ja eläkeläiset Bashissa käyttämällä sisäkkäisiä If-lausuntoja?
Muokataan yllä olevaa koodia hieman käyttääksesi sisäkkäistä if-toimintoa.
#!/bin/bash
# Kehota käyttäjää antamaan ikä
echo -n Anna ikäsi:
lue ikäjos [ $ikä -ge 18 ]; sitten
echo Olet äänioikeutettu.
jos [ $ikä -ge 65 ]; sitten
echo Olet oikeutettu myös eläkeläisten etuihin.
muu
echo Et ole vielä oikeutettu eläkeläisten etuuksiin.
olla
muu
echo Et ole vielä äänioikeutettu.
olla
Selitys:
- #!/bin/bash : Tämä rivi on shebang, joka osoittaa, että komentosarja tulee tulkita ja suorittaa Bash-kuoren avulla.
- # Kehota käyttäjää antamaan ikä : Tämä on kommentti, joka osoittaa seuraavan rivin tarkoituksen.
- echo -n Anna ikäsi: : Tämä rivi tulostaa viestin Syötä ikäsi: päätteeseen siirtymättä seuraavalle riville. Käyttäjä syöttää ikänsä samalle riville.
- lue ikä : Tämä rivi lukee käyttäjän syötteen ja määrittää sen muuttujalle 'age'.
- jos [ $ikä -ge 18 ]; sitten : Tämä on if-lause, joka tarkistaa, onko 'age'-arvo suurempi tai yhtä suuri kuin 18.
- $ikä : Edustaa muuttujan 'age' arvoa.
- -ge : tarkoittaa suurempi tai yhtä suuri numeerisen vertailun yhteydessä.
- 18 : Arvoa verrataan.
- echo Olet äänioikeutettu. : Jos edellisen rivin ehto on tosi, tämä rivi suoritetaan ja tulostetaan. Olet äänioikeutettu. terminaaliin.
- jos [ $ikä -ge 65 ]; sitten : Ensimmäisen if-lohkon sisällä tämä on toinen if-lause, joka tarkistaa, onko 'age'-arvo suurempi tai yhtä suuri kuin 65.
- $ikä : Edustaa muuttujan 'age' arvoa.
- -ge : tarkoittaa suurempi tai yhtä suuri numeerisen vertailun yhteydessä.
- 65 : Arvoa verrataan.
- echo Olet oikeutettu myös eläkeläisten etuihin. : Jos sisemmän if-lauseen ehto on tosi, tämä rivi suoritetaan ja tulostetaan. Olet myös oikeutettu eläkeläisten etuihin. terminaaliin.
- muu : Jos sisemmän if-lauseen ehto on epätosi, komentosarja hyppää ulkoisen if-lauseen sisällä olevaan else-lohkoon.
- echo Et ole vielä oikeutettu eläkeläisten etuuksiin. : Tämä rivi suoritetaan, jos ikä-arvo ei ole suurempi tai yhtä suuri kuin 65, tulostus Et ole vielä oikeutettu eläkeläisten etuihin. terminaaliin.
- olla : Tämä tarkoittaa sisemmän jos-else-lohkon loppua.
- muu : Jos ulkoisen if-lauseen ehto on epätosi, komentosarja hyppää else-lohkoon.
- echo Et ole vielä äänioikeutettu. : Tämä rivi suoritetaan, jos 'age'-arvo ei ole suurempi tai yhtä suuri kuin 18, tulostus Et ole vielä äänioikeutettu. terminaaliin.
- olla : Tämä tarkoittaa ulomman jos-else-lohkon loppua.
Lähtö:
Nested-if käyttäen Bashia
Usein kysytyt kysymykset ja huomautukset tilanteesta CONDITION
Nämä ovat muutamia asioita, jotka minun tulee pitää mielessäni kirjoittaessani testiehtoja bashissa.
1. Varmista, että suluissa ja varsinaisen tarkistus-/vertailulausekkeen välissä on tyhjät välilyönnit.
Esimerkiksi seuraava ei toimi.
if [$x==0]Bash ilmoittaa virheestä koskien a puuttuu] .
2. Lopeta rivi aina ennen uuden avainsanan lisäämistä, kuten sitten.
If, then else, elif ja fi ovat kaikki shell-avainsanoja, mikä tarkoittaa, että niitä ei voi käyttää samalla rivillä. Laita ; edellisen lauseen ja avainsanan välillä tai aloita uusi rivi avainsanalla.
3. Jos haluat käyttää useita ehtoja yhdessä käskyssä, käytä loogisia operaattoreita.
Voimme käyttää loogisia AND(&&)- tai loogisia OR(||)-operaattoreita useiden ehtojen käyttämiseen.
Esimerkiksi:
if [[ $x -ge $y ]] && [[ $x -ge $z ]]; then echo 'x is greatest' fiTässä -ge on lyhenne sanoista suurempi tai yhtä suuri kuin
4. Kuinka verrata merkkijonoja Bash if -lauseessa?
Käytä ` => `> operaattori merkkijono yhtäläisyydelle ja ` !=`> eriarvoisuuden vuoksi.
Esimerkiksi:
if [ '$string1' = '$string2' ]; then # Code to execute if strings are equal else # Code to execute if strings are not equal fi
5. Voinko käyttää säännöllisiä lausekkeita Bash if -lauseissa?
Kyllä, voit käyttää ` [[ ... ]]`> muodostaa edistyneemmän merkkijonovastaavuuden säännöllisten lausekkeiden kanssa.
Esimerkiksi:
if [[ '$string' =~ ^[0-9]+$ ]]; then # Code to execute if the string contains only numbers else # Code to execute if the string does not contain only numbers fi
6. Kuinka tarkistaa, onko Bash-komentosarjassa tiedosto if-käskyn avulla?
Voit käyttää ` -e`> lippu tällaisessa kunnossa:
if [ -e 'filename' ]; then # Code to execute if the file exists else # Code to execute if the file does not exist fi
7. Mikä on if-else-lausekkeen syntaksi Bash-komentosarjassa?
Perussyntaksi an 'jos-muu'. lause Bash-komentosarjassa on:
if [ condition ]; then # Code to execute if condition is true else # Code to execute if condition is false fi
8. Kuinka käytän elif-lausetta Bash-skriptissä?
` elif`> lauseketta käytetään lisäehtojen tarkistamiseen, jos alkukirjain if> ehto on väärä.
Tässä on esimerkki:
if [ condition1 ]; then # Code to execute if condition1 is true elif [ condition2 ]; then # Code to execute if condition2 is true else # Code to execute if none of the conditions are true fi
9. Kuinka voin käyttää loogisia operaattoreita (AND, OR) Bash if -lauseissa?
Voit käyttää ` -a`> loogisille AND ja ` -o`> loogiselle TAI:lle.
Esimerkiksi:
if [ condition1 -a condition2 ]; then # Code to execute if both conditions are true fi
Johtopäätös
Tässä artikkelissa keskustelimme Bash-komentosarjasta, joka on kuin erittäin hyödyllinen työkalu saada tietokoneesi tekemään asioita automaattisesti. Tämä artikkeli opetti meille bashin if-lauseesta, joka on kuin skriptien päätöksentekijä. Opimme perusasiat, näimme esimerkkejä, kuten tarkistamme, onko luku parillinen tai selvitimme, voiko joku äänestää, ja tutkimme jopa hienompia asioita, kuten monien ehtojen käsittelyä tai jos-lauseiden laittamista toistensa sisälle. Artikkelissa annettiin selkeitä selityksiä, esimerkkejä ja vastattiin yleisiin kysymyksiin auttaakseen meitä käyttämään Bash-skriptejä paremmin. Tärkeintä on olla varovainen yksityiskohtien, kuten välien ja erityissääntöjen kanssa, jotta skriptimme toimivat sujuvasti ja helpottavat tehtävien käsittelyä tietokoneella.