- 'Jos'-lausekkeen käyttö
- 'If-Else' -lausunnon käyttö
- 'If-Elif-Else' -lausunnon käyttö
- 'Jos'-lausekkeen käyttäminen tyhjän muuttujan tarkistamiseen
- 'Jos'-lausekkeen käyttö loogisen operaattorin kanssa
- Sisäkkäisten 'Jos'-lausekkeiden käyttö
- Käytä 'Jos'-lauseketta tiedoston olemassaolon tarkistamiseen
- 'Jos'-lausekkeen käyttäminen hakemiston olemassaolon tarkistamiseen
- 'Jos'-lausekkeen käyttö Regexin kanssa
- 'Tapauslausunnon' käyttö
'Jos'-lausekkeen käyttö
Tämä esimerkki näyttää yksinkertaisen 'if'-lauseen käytön Bashissa. Bashin numeeristen arvojen vertailuun voidaan käyttää kuuden tyyppistä vertailuoperaattoria. Nämä ovat '-eq' (saa), '-ne' (ei yhtä suuri), '-le' (pienempi kuin yhtä suuri), '-ge' (suurempi kuin yhtä suuri), '-lt' (pienempi kuin) ja ' -gt” (suurempi kuin). '-lt' ja '-eq' on esitetty seuraavassa skriptissä riippumatta siitä, onko luku pienempi kuin 99 tai sitä ei ole tarkistettu operaattorilla '-lt'. Numero on parillinen tai pariton, ja sen tarkistaa '-eq'-operaattori.
#!/bin/bash
#Määritä numeerinen arvo
( ( määrä = viisikymmentä ) )
#Tarkista numeerinen arvo käyttämällä if-lausetta
jos [ $numero -lt 99 ]
sitten
kaiku 'Numero on voimassa.'
olla
#Tarkista, onko luku parillinen vai ei
jos [ $ ( ( $numero % 2 ) ) -ekv 0 ]
sitten
kaiku 'Luku on parillinen.'
olla
Lähtö :
Seuraava tulos tulee näkyviin edellisen skriptin suorittamisen jälkeen:
'If-Else' -lausunnon käyttö
'if-else' -käskyn käyttö näkyy seuraavassa skriptissä. Merkkijonoarvo otetaan käyttäjältä ja tarkistaa, onko arvo 'SININEN' vai ei, käyttämällä 'if-else' -käskyä.
#!/bin/bash
#Ota merkkijonoarvo käyttäjältä
lukea -s 'Anna suosikkiväri:' väri
#Tarkista merkkijonon arvo käyttämällä if-else-lausetta
jos [ ${color^^} == 'SININEN' ]
sitten
kaiku 'Hyvä, sininen väri on saatavilla.'
muu
kaiku ' $väri ei ole saatavilla.'
olla
Lähtö :
Seuraava tulos tulee näkyviin edellisen skriptin suorittamisen jälkeen, jos syötteeksi valitaan 'punainen':
Seuraava tulos tulee näkyviin edellisen skriptin suorittamisen jälkeen, jos syötteeksi valitaan 'sininen':
'If-Elif-Else' -lausunnon käyttö
'if-elif-else' -lauseen käyttö näkyy seuraavassa skriptissä. Käyttäjältä otetaan numero ja sitä tarkistetaan eri arvoilla, kunnes jokin vastaavuus löytyy. Jos vastaavuus löytyy, vastaava viesti tulostetaan. Jos vastaavuutta ei löydy, oletusviesti tulostetaan.
#!/bin/bash#Ota id-arvo käyttäjältä
lukea -s 'Anna sarjanumerosi:' sarja
#Tarkista syötearvo käyttämällä if-elif-else -lausetta
jos [ $sarja == '4523' ]
sitten
kaiku 'Olet valittu ryhmässä A.'
Elif [ $sarja == '8723' ]
sitten
kaiku 'Olet valittu ryhmässä B.'
Elif [ $sarja == '3412' ]
sitten
kaiku 'Olet valittu ryhmässä C.'
muu
kaiku 'Et ole valittu' .
olla
Lähtö:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 8723:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 9078:
'Jos'-lausekkeen käyttäminen tyhjän muuttujan tarkistamiseen
Menetelmä, jolla tarkistetaan, onko muuttuja tyhjä ilman if-lausetta, on esitetty seuraavassa skriptissä. '-z'-vaihtoehtoa käytetään 'if'-käskyssä tämän tehtävän suorittamiseen.
#!/bin/bash#Ota id-arvo käyttäjältä
lukea -s 'Anna sarjanumerosi:' sarja
#Tarkista, onko muuttuja tyhjä vai ei
jos [ ! -Kanssa $sarja ]
sitten
#Tarkista syötearvo käyttämällä 'if-elif-else' -lausetta
jos [ $sarja == '690' ]
sitten
kaiku 'Olet valittu joukkueeseen 1.'
Elif [ $sarja == '450' ]
sitten
kaiku 'Olet valittu joukkueeseen 2.'
muu
kaiku 'Et ole valittu' .
olla
muu
kaiku 'Sarjanumeroa ei anneta.'
olla
Lähtö :
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 690:
Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen, jos syöttöarvoa ei oteta:
'Jos'-lausekkeen käyttö loogisten operaattoreiden kanssa
Bash-ehtolauseessa voidaan käyttää kolmenlaisia loogisia operaattoreita. Nämä ovat looginen TAI (||), looginen AND (&&) ja looginen EI (!). Koodiarvo otetaan käyttäjältä. Jos syötearvo ei ole tyhjä, arvo tarkistetaan kahdella koodiarvolla käyttämällä loogista TAI. Jos arvo vastaa jotakin koodia, tulostetaan vastaava viesti. Jos vastaavaa koodia ei löydy, oletusviesti tulostetaan.
#!/bin/bash#Ota kurssikoodi käyttäjältä
lukea -s 'Syötä kurssikoodi:' koodi
#Tarkista, onko muuttuja tyhjä vai ei
jos [ ! -Kanssa $koodi ]
sitten
#Tarkista syötearvo käyttämällä if-elif-else -lausetta
jos [ [ $koodi == 'CSE-106' || $koodi == 'CSE-108' ] ]
sitten
kaiku 'CSE-kurssi.'
Elif [ [ $koodi == 'BBA-203' || $koodi == 'BBA-202' ] ]
sitten
kaiku 'BBA-kurssi.'
muu
kaiku 'Virheellinen kurssikoodi.'
olla
muu
kaiku 'Kurssikoodia ei anneta.'
olla
Lähtö :
Seuraava tulos tulee näkyviin sen jälkeen, kun komentosarja on suoritettu syötearvolla 'CSE-108':
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu syötearvolla 'BBA-56':
Sisäkkäisten 'Jos'-lausekkeiden käyttö
Kun 'if'-ehtoa käytetään toisen 'if'-ehdon sisällä, sitä kutsutaan sisäkkäiseksi 'if'-lauseeksi. Sisäkkäisen 'if'-komenton käyttötapa näkyy seuraavassa skriptissä. Kaksi merkkiarvoa otetaan käyttäjältä. Jos syötearvot eivät ole tyhjiä, ensimmäinen 'jos'-ehto tarkistaa, onko '$teorian' arvo suurempi tai yhtä suuri kuin 60 vai ei. Jos ensimmäinen 'jos'-ehto palauttaa 'true', toinen 'if'-ehto tarkistaa, onko '$lab' arvo suurempi tai yhtä suuri kuin 50 vai ei. Jos myös toinen 'jos'-ehto palauttaa 'true', tulostetaan onnistumisviesti. Muussa tapauksessa tulostetaan virheilmoitus.
#!/bin/bash#Ota teoriamerkintä
lukea -s 'Syötä teoriamerkki:' teoria
#Ota laboratoriomerkki
lukea -s 'Syötä laboratoriomerkki:' lab
#Tarkista, ovatko muuttujat tyhjiä vai eivät
jos [ [ ! -Kanssa $teoria && ! -Kanssa $lab ] ]
sitten
#Tarkista syöttöarvot käyttämällä sisäkkäistä if-lausetta
jos [ $teoria -ge 60 ]
sitten
jos [ $lab -ge viisikymmentä ]
sitten
kaiku 'Olet ohittanut.'
muu
kaiku 'Olet epäonnistunut.'
olla
muu
kaiku 'Olet epäonnistunut.'
olla
muu
kaiku 'Teoria tai laboratoriomerkki on tyhjä.'
olla
Lähtö :
Seuraava tulos tulee näkyviin, jos molemmat tai yksi tuloarvoista on tyhjiä:
Seuraava tulos tulee näkyviin, jos 78 otetaan teoriaarvosanaksi ja 45 otetaan laboratoriopisteiksi. Tässä toinen 'jos'-ehto palauttaa 'false':
Seuraava tulos tulee näkyviin, jos 67 otetaan teoriaarvosanaksi ja 56 otetaan laboratoriopisteiksi. Tässä molemmat 'jos' -ehdot palauttavat 'tosi':
Seuraava tulos tulee näkyviin, jos 50 otetaan teoriaarvosanaksi ja 80 otetaan laboratoriopisteiksi. Tässä ensimmäinen 'jos'-ehto palauttaa 'false':
Käytä 'Jos'-lauseketta tiedoston olemassaolon tarkistamiseen
Bash-skripti voi tarkistaa tiedoston olemassaolon kahdella tavalla. Yksi on '-f'-operaattorin käyttö '[]'-suluissa. Toinen käyttää 'test'-komentoa ja '-f'-operaattoria. Tiedostonimi otetaan ja tarkistaa tiedoston olemassaolon käyttämällä 'if'-ehtoa '-f'-operaattorilla. Sitten otetaan toinen tiedostonimi ja tarkistetaan tiedoston olemassaolo 'if'-käskyllä 'test'-komennolla ja '-f'-operaattorilla.
#!/bin/bash#Ota tiedostonimi
lukea -s 'Anna tiedostonimi:' fn1
#Tarkista, onko tiedosto olemassa vai ei ilman testiä
jos [ -f $fn1 ]
sitten
kaiku ' $fn1 tiedosto on olemassa.'
muu
kaiku ' $fn1 tiedostoa ei ole.'
olla
#Lisää rivinvaihto
kaiku
#Ota toinen tiedostonimi
lukea -s 'Anna toinen tiedostonimi:' fn2
#Tarkista, onko tiedosto olemassa vai ei, käyttämällä 'testiä'.
jos testata -f $fn2 ; sitten
kaiku ' $fn2 tiedosto on olemassa.'
#Tarkista, onko tiedosto tyhjä vai ei testaamalla
jos testata -Kanssa $fn2 ; sitten
kaiku ' $fn2 tiedosto on tyhjä.'
muu
kaiku ' $fn2 tiedosto ei ole tyhjä.'
olla
muu
kaiku ' $fn2 tiedostoa ei ole.'
olla
Lähtö :
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu ottamalla tiedostonimiksi 'test.txt' ja 'testing.txt'. Tulosteen mukaan molemmat tiedostot ovat nykyisessä paikassa ja 'testing.txt'-tiedosto on tyhjä:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu ottamalla tiedostonimiksi 'f1.txt' ja 'test.txt'. Tulosteen mukaan 'f1.txt'-tiedostoa ei ole nykyisessä paikassa eikä 'test.txt'-tiedosto ole tyhjä:
'Jos'-lausekkeen käyttäminen hakemiston olemassaolon tarkistamiseen
Hakemiston olemassaolo voidaan tarkistaa Bash-skriptillä kahdella tavalla, kuten tiedosto. Yksi on '-d'-operaattorin käyttö '[]'-suluissa. Toinen käyttää 'test'-komentoa ja '-d'-operaattoria. Hakemiston nimi otetaan ja tarkistaa hakemiston olemassaolon käyttämällä 'if'-ehtoa '-d'-operaattorilla. Sitten otetaan toinen hakemiston nimi ja tarkistetaan tiedoston olemassaolo 'if'-käskyllä 'test'-komennolla ja '-d'-operaattorilla.
#!/bin/bash#Ota hakemiston nimi
lukea -s 'Anna hakemiston nimi:' sinä1
#Tarkista, onko hakemisto olemassa vai ei ilman testiä
jos [ -d $dir1 ]
sitten
kaiku ' $dir1 hakemisto on olemassa.'
muu
kaiku ' $dir1 hakemistoa ei ole olemassa.'
olla
#Lisää rivinvaihto
kaiku
#Ota toinen hakemistonimi
lukea -s 'Anna toinen hakemiston nimi:' ohjaus2
#Tarkista, onko tiedosto olemassa vai ei, käyttämällä 'testiä'.
jos testata -d $dir2
sitten
kaiku ' $dir2 hakemisto on olemassa.'
muu
kaiku ' $dir2 hakemistoa ei ole olemassa.'
olla
Lähtö :
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu hakemistonimien 'temp' ja 'files' kanssa. Tulosteen mukaan molemmat hakemistot ovat olemassa nykyisessä sijainnissa. Sitten 'ls'-komento suoritetaan hakemistojen sisällön tarkistamiseksi:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu 'testing'- ja 'new'-hakemistojen nimillä. Tulosteen mukaan kumpaakaan hakemistoa ei ole nykyisessä sijainnissa. Sitten 'ls'-komennon tulos osoittaa, että kumpaakaan hakemistoa ei ole olemassa:
'Jos'-lausekkeen käyttö Regexin kanssa
Seuraava komentosarja näyttää menetelmän syötetietojen vahvistamiseksi käyttämällä 'if'-käskyä säännöllisen lausekkeen kanssa. Tässä kaksi syöttöarvoa otetaan käyttäjältä ja tallennetaan muuttujiin '$bookname' ja '$bookprice'. 'if'-ehtoa käytetään komentosarjassa tarkistamaan, että '$bookname' -muuttuja sisältää kaikki aakkosmerkit ja '$bookprice' sisältää numeron.
#!/bin/bash#Ota kirjan nimi ja hinta käyttäjältä
kaiku -n 'Anna kirjan nimi:'
lukea kirjan nimi
kaiku -n 'Anna kirjan hinta:'
lukea kirjan hinta
#Tarkista, että kirjan nimi sisältää vain aakkoset
jos ! [ [ ' $kirjannimi ' =~ [ A-Za-z ] ] ] ; sitten
kaiku 'Kirjan nimi on virheellinen.'
muu
kaiku 'Kirjan nimi on kelvollinen.'
olla
#Tarkista, että kirjan hinta sisältää vain numerot
jos ! [ [ ' $kirjan hinta ' =~ [ 0 - 9 ] ] ] ; sitten
kaiku 'Kirjan hinta voi sisältää vain numeron.'
muu
kaiku 'Kirjan hinta on voimassa.'
olla
Lähtö :
Seuraava tulos tulee näkyviin sen jälkeen, kun komentosarja on suoritettu, ja kirjan nimenä on 'Bash Programming' -arvo ja kirjan hinta 78:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu, ja kirjan nimeksi on syötetty arvo 90 ja kirjan hinnaksi 'Bash':
'Tapauslausunnon' käyttö
'Case'-lauseke on vaihtoehto 'if-elif-else'-lauseelle, mutta kaikkia 'if-elif-else'-lauseen tehtäviä ei voida tehdä 'case'-käskyn avulla. 'Case'-lauseen yksinkertainen käyttö on esitetty seuraavassa skriptissä. Numeerinen arvo otetaan käyttäjältä kuluvan kuukauden arvoksi. Sitten tulostetaan vastaava kuukausi, jos 'case'-lauseesta löytyy vastaava arvo. Muussa tapauksessa oletusviesti tulostetaan.
#!/bin/bash#Ota nykyisen kuukauden arvo numeroina
lukea -s 'Syötä tämän päivän kuukausi numeroina:' b_kuukausi
#Tulosta teksti ennen kuukauden nimen tulostamista
kaiku -n 'Tämän kuukauden nimi on'
#Ota selvää ja tulosta vastaava kuukauden nimi syötteen perusteella
tapaus $b_kuukausi sisään
1 | 01 ) kaiku 'Tammikuu.' ;;
2 | 02 ) kaiku 'Helmikuu.' ;;
3 | 03 ) kaiku 'Maaliskuu.' ;;
4 | 04 ) kaiku 'Huhtikuu.' ;;
5 | 05 ) kaiku 'Saattaa.' ;;
6 | 06 ) kaiku 'Kesäkuu.' ;;
7 | 07 ) kaiku 'Heinäkuu.' ;;
8 | 08 ) kaiku 'Elokuu.' ;;
9 | 09 ) kaiku 'Syyskuu.' ;;
10 ) kaiku 'Lokakuu.' ;;
yksitoista ) kaiku 'Marraskuu.' ;;
12 ) kaiku 'Joulukuu.' ;;
* ) kaiku 'ei löydetty.' ;;
esac
Lähtö :
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 6:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 09:
Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 14:
Johtopäätös
Ehdollisen logiikan erilaiset käyttötavat, joissa käytetään 'if'- ja 'case'-lauseita, on esitetty tämän opetusohjelman 10 esimerkissä. Ehdollisen logiikan käyttö Bashissa poistetaan uusilta Bash-käyttäjiltä tämän opetusohjelman lukemisen jälkeen.