Kuinka hallita ehdollista logiikkaa Bashissa

Kuinka Hallita Ehdollista Logiikkaa Bashissa



Ehdollisen logiikan käyttö on erittäin olennainen osa mitä tahansa ohjelmointikieltä. Ehdollinen logiikka voidaan toteuttaa Bashissa eri tavoin ohjelmointiongelmien ratkaisemiseksi. Tässä opetusohjelmassa esitetään menetelmät, joilla Bashissa käytetään ehdollista logiikkaa erityyppisten 'if'- ja 'case'-lauseiden avulla merkkijonon ja numeeristen arvojen vertaamiseen, muuttujan sisällön tarkistamiseen, tiedoston tai hakemiston olemassaolon tarkistamiseen jne. .

Sisältöluettelo:

  1. 'Jos'-lausekkeen käyttö
  2. 'If-Else' -lausunnon käyttö
  3. 'If-Elif-Else' -lausunnon käyttö
  4. 'Jos'-lausekkeen käyttäminen tyhjän muuttujan tarkistamiseen
  5. 'Jos'-lausekkeen käyttö loogisen operaattorin kanssa
  6. Sisäkkäisten 'Jos'-lausekkeiden käyttö
  7. Käytä 'Jos'-lauseketta tiedoston olemassaolon tarkistamiseen
  8. 'Jos'-lausekkeen käyttäminen hakemiston olemassaolon tarkistamiseen
  9. 'Jos'-lausekkeen käyttö Regexin kanssa
  10. '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:



  p1





Mennä huipulle

'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':

  p2-1

Seuraava tulos tulee näkyviin edellisen skriptin suorittamisen jälkeen, jos syötteeksi valitaan 'sininen':

  p2-2

Mennä huipulle

'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:

  p3-1

Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 9078:

  p3-2

Mennä huipulle

'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:

  p4-1

Seuraava tulos tulee näkyviin komentosarjan suorittamisen jälkeen, jos syöttöarvoa ei oteta:

  p4-2

Mennä huipulle

'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':

  p5-1

Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu syötearvolla 'BBA-56':

  p5-2

Mennä huipulle

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ä:

  p6-1

Seuraava tulos tulee näkyviin, jos 78 otetaan teoriaarvosanaksi ja 45 otetaan laboratoriopisteiksi. Tässä toinen 'jos'-ehto palauttaa 'false':

  p6-2

Seuraava tulos tulee näkyviin, jos 67 otetaan teoriaarvosanaksi ja 56 otetaan laboratoriopisteiksi. Tässä molemmat 'jos' -ehdot palauttavat 'tosi':

  p6-3

Seuraava tulos tulee näkyviin, jos 50 otetaan teoriaarvosanaksi ja 80 otetaan laboratoriopisteiksi. Tässä ensimmäinen 'jos'-ehto palauttaa 'false':

  p6-4

Mennä huipulle

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ä:

  p7-1

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ä:

  p7-2

Mennä huipulle

'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:

  p8-1

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:

  p8-2

Mennä huipulle

'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:

  p9-1

Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu, ja kirjan nimeksi on syötetty arvo 90 ja kirjan hinnaksi 'Bash':

  p9-2

Mennä huipulle

'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:

  p10-1

Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 09:


  p10-2

Seuraava tulos tulee näkyviin, kun komentosarja on suoritettu arvolla 14:

  p10-3

Mennä huipulle

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.