Kaip įvaldyti sąlyginę logiką „Bash“.

Kaip Ivaldyti Salygine Logika Bash



Sąlyginės logikos naudojimas yra labai svarbi bet kurios programavimo kalbos dalis. Sąlyginė logika gali būti įdiegta Bash įvairiais būdais, siekiant išspręsti programavimo problemas. Sąlyginės logikos naudojimo Bash naudojant skirtingų tipų „if“ ir „case“ teiginius, siekiant palyginti eilutę ir skaitines reikšmes, tikrinti kintamojo turinį, patikrinti, ar failas ar katalogas yra ir kt., metodai parodyti šioje pamokoje. .

Turinio sąrašas:

  1. „Jei“ pareiškimo naudojimas
  2. Pareiškimo „Jei kitu atveju“ naudojimas
  3. „If-Elif-Else“ pareiškimo naudojimas
  4. „Jei“ teiginio naudojimas tuščiam kintamajam patikrinti
  5. „Jei“ teiginio naudojimas su loginiu operatoriumi
  6. Įdėtųjų „Jei“ teiginių naudojimas
  7. Pareiškimo „Jei“ naudojimas failo egzistavimui patikrinti
  8. „Jei“ teiginio naudojimas katalogo buvimui patikrinti
  9. Pareiškimo „Jei“ naudojimas su Regex
  10. „Atvejo“ pareiškimo naudojimas

„Jei“ pareiškimo naudojimas

Šiame pavyzdyje parodytas paprastas sakinio „if“ naudojimas Bash. Norint palyginti Bash skaitines reikšmes, galima naudoti šešių tipų palyginimo operatorius. Tai yra '-eq' (lygus), '-ne' (nelygus), '-le' (mažiau nei lygus), '-ge' (didesnis nei lygus), '-lt' (mažiau nei) ir ' -gt“ (didesnis nei). „-lt“ ir „-eq“ naudojimas rodomas toliau pateiktame scenarijuje, nesvarbu, ar skaičius yra mažesnis nei 99, ar nebuvo patikrintas naudojant „-lt“ operatorių. Skaičius yra lyginis arba nelyginis ir jį tikrina „-eq“ operatorius.





#!/bin/bash

#Priskirkite skaitinę reikšmę

( ( numerį = penkiasdešimt ) )

#Patikrinkite skaitinę reikšmę naudodami teiginį „if“.

jeigu [ $numeris -lt 99 ]

tada

aidas 'Numeris galioja.'

būti

#Patikrinkite, ar skaičius lyginis, ar ne

jeigu [ $ ( ( $numeris % 2 ) ) -ekv 0 ]

tada

aidas „Skaičius lyginis“.

būti

Išvestis :



Įvykdžius ankstesnį scenarijų pasirodo ši išvestis:



  p1





Eiti į viršų

Pareiškimo „Jei kitu atveju“ naudojimas

Teiginio „if-else“ naudojimas parodytas šiame scenarijuje. Eilutės reikšmė paimama iš vartotojo ir patikrinama, ar reikšmė yra „BLUE“, ar ne, naudojant „if-else“ teiginį.



#!/bin/bash

#Paimkite iš vartotojo eilutės reikšmę

skaityti -p 'Įveskite savo mėgstamą spalvą:' spalva

#Patikrinkite eilutės reikšmę naudodami teiginį „if-else“.

jeigu [ ${color^^} == 'BLUE' ]

tada

aidas 'Gerai, yra mėlyna spalva.'

Kitas

aidas $ spalva negalimas.'

būti

Išvestis :

Ši išvestis pasirodo po ankstesnio scenarijaus vykdymo, jei kaip įvestis yra „raudona“:

  p2-1

Ši išvestis pasirodo po ankstesnio scenarijaus vykdymo, jei kaip įvestis yra „mėlyna“:

  p2-2

Eiti į viršų

„If-Elif-Else“ pareiškimo naudojimas

Teiginio „if-elif-else“ naudojimas parodytas toliau pateiktame scenarijuje. Iš vartotojo paimamas skaičius ir tikrinamas su skirtingomis reikšmėmis, kol randama atitiktis. Jei randama atitiktis, išspausdinamas atitinkamas pranešimas. Jei atitikmens nerasta, išspausdinamas numatytasis pranešimas.

#!/bin/bash

#Paimkite ID reikšmę iš vartotojo

skaityti -p 'Įveskite savo serijos numerį:' serijinis

#Patikrinkite įvesties reikšmę naudodami teiginį „if-elif-else“.

jeigu [ $serialas == '4523' ]

tada

aidas „Esate atrinktas į A grupę“.

Elif [ $serialas == '8723' ]

tada

aidas „Esate atrinktas į B grupę“.

Elif [ $serialas == '3412' ]

tada

aidas „Esate atrinktas į C grupę“.

Kitas

aidas 'Jūs nesate pasirinktas' .

būti

Išvestis:

Įvykdžius scenarijų, kurio reikšmė yra 8723, pasirodo ši išvestis:

  p3-1

Įvykdžius scenarijų, kurio reikšmė yra 9078, pasirodo ši išvestis:

  p3-2

Eiti į viršų

„Jei“ teiginio naudojimas tuščiam kintamajam patikrinti

Patikrinimo, ar kintamasis tuščias, nenaudojant „if“ teiginio, metodas parodytas kitame scenarijuje. Šiai užduočiai atlikti teiginyje „if“ naudojama parinktis „-z“.

#!/bin/bash

#Paimkite ID reikšmę iš vartotojo

skaityti -p 'Įveskite savo serijos numerį:' serijinis

#Patikrinkite, ar kintamasis tuščias, ar ne

jeigu [ ! -Su $serialas ]

tada

#Patikrinkite įvesties reikšmę naudodami teiginį „if-elif-else“.

jeigu [ $serialas == '690' ]

tada

aidas „Esate atrinktas į komandą-1“.

Elif [ $serialas == '450' ]

tada

aidas „Esate atrinktas į 2 komandą“.

Kitas

aidas 'Jūs nesate pasirinktas' .

būti

Kitas

aidas 'Serijos numeris nenurodytas.'

būti

Išvestis :

Įvykdžius scenarijų, kurio vertė yra 690, pasirodo ši išvestis:

  p4-1

Jei nepaimama jokia įvesties reikšmė, paleidus scenarijų pasirodo ši išvestis:

  p4-2

Eiti į viršų

„Jei“ teiginio naudojimas su loginiais operatoriais

Bash sąlyginiame sakinyje galima naudoti trijų tipų loginius operatorius. Tai yra loginis ARBA (||), loginis IR (&&) ir loginis NE (!). Kodo reikšmė paimama iš vartotojo. Jei įvesties reikšmė netuščia, reikšmė tikrinama dviem kodo reikšmėmis naudojant loginį ARBA. Jei reikšmė sutampa su bet kuriuo kodu, išspausdinamas atitinkamas pranešimas. Jei nerandamas atitinkantis kodas, išspausdinamas numatytasis pranešimas.

#!/bin/bash

#Paimkite kurso kodą iš vartotojo

skaityti -p 'Įveskite kurso kodą:' kodas

#Patikrinkite, ar kintamasis tuščias, ar ne

jeigu [ ! -Su $kodas ]

tada

#Patikrinkite įvesties reikšmę naudodami teiginį „if-elif-else“.

jeigu [ [ $kodas == „CSE-106“ || $kodas == „CSE-108“ ] ]

tada

aidas „TPP kursas“.

Elif [ [ $kodas == „BBA-203“ || $kodas == „BBA-202“ ] ]

tada

aidas 'BBA kursas'.

Kitas

aidas 'Neteisingas kurso kodas.'

būti

Kitas

aidas 'Joks kurso kodas nesuteikiamas.'

būti

Išvestis :

Įvykdžius scenarijų su įvesties reikšme „CSE-108“, pasirodo ši išvestis:

  p5-1

Įvykdžius scenarijų su įvesties reikšme „BBA-56“, pasirodo ši išvestis:

  p5-2

Eiti į viršų

Įdėtųjų „Jei“ teiginių naudojimas

Kai sąlyga „if“ naudojama kitoje sąlygoje „if“, ji vadinama įdėtuoju „if“ teiginiu. Įdėto „jei“ naudojimo būdas parodytas kitame scenarijuje. Iš vartotojo paimamos dvi žymų reikšmės. Jei įvesties reikšmės nėra tuščios, pirmoji sąlyga „if“ patikrina, ar „$theory“ reikšmė yra didesnė arba lygi 60, ar ne. Jei pirmoji sąlyga „if“ grąžina „true“, antroji sąlyga „if“ patikrina, ar „$lab“ reikšmė yra didesnė arba lygi 50, ar ne. Jei antroji sąlyga „jei“ taip pat grąžina „true“, išspausdinamas sėkmės pranešimas. Priešingu atveju išspausdinamas pranešimas apie gedimą.

#!/bin/bash

#Paimkite teorijos pažymį

skaityti -p 'Įveskite teorijos ženklą:' teorija

#Paimkite laboratorinį ženklą

skaityti -p 'Įveskite laboratorijos ženklą:' lab

#Patikrinkite, ar kintamieji tušti, ar ne

jeigu [ [ ! -Su $teorija && ! -Su $lab ] ]

tada

#Patikrinkite įvesties reikšmes naudodami įdėtą „if“ teiginį

jeigu [ $teorija -ge 60 ]

tada

jeigu [ $lab -ge penkiasdešimt ]

tada

aidas — Jūs praėjote.

Kitas

aidas — Tau nepavyko.

būti

Kitas

aidas — Tau nepavyko.

būti

Kitas

aidas „Teorija arba laboratorijos ženklas tuščias“.

būti

Išvestis :

Jei abi arba viena iš įvesties reikšmių tuščios, rodoma ši išvestis:

  p6-1

Ši išvestis rodoma, jei 78 laikomi teorijos pažymiais, o 45 - laboratoriniais pažymiais. Čia antroji sąlyga „jei“ grąžina „false“:

  p6-2

Jei 67 laikomas teorijos pažymiu, o 56 - laboratoriniu pažymiu, rodomas toks rezultatas. Čia abi „jei“ sąlygos grąžina „teisinga“:

  6-3 p

Ši išvestis rodoma, jei 50 laikomi teorijos pažymiais, o 80 - laboratoriniais pažymiais. Čia pirmoji sąlyga „jei“ grąžina „false“:

  6-4 p

Eiti į viršų

Pareiškimo „Jei“ naudojimas failo egzistavimui patikrinti

Failo egzistavimą bash scenarijus galima patikrinti dviem būdais. Vienas iš jų naudoja „-f“ operatorių su „[]“ skliaustais. Kitas būdas naudoti komandą „test“ ir „-f“ operatorių. Paimamas failo pavadinimas ir patikrinamas failo egzistavimas naudojant sąlygą „if“ su operatoriumi „-f“. Tada paimamas kitas failo pavadinimas ir patikrinama, ar failas yra, naudojant teiginį „if“ su komanda „test“ ir operatoriumi „-f“.

#!/bin/bash

#Paimkite failo pavadinimą

skaityti -p 'Įveskite failo pavadinimą:' fn1

#Patikrinkite, ar failas egzistuoja, ar ne, nenaudodami „testo“.

jeigu [ -f $fn1 ]

tada

aidas $fn1 failas egzistuoja“.

Kitas

aidas $fn1 failas neegzistuoja.'

būti

#Pridėti naują eilutę

aidas

#Paimkite kitą failo pavadinimą

skaityti -p 'Įveskite kitą failo pavadinimą:' fn2

#Patikrinkite, ar failas egzistuoja, ar ne, naudodami „testą“.

jeigu bandymas -f $fn2 ; tada

aidas $fn2 failas egzistuoja“.

#Patikrinkite, ar failas tuščias, ar ne, naudodami „testą“.

jeigu bandymas -Su $fn2 ; tada

aidas $fn2 failas tuščias“.

Kitas

aidas $fn2 failas nėra tuščias“.

būti

Kitas

aidas $fn2 failas neegzistuoja.'

būti

Išvestis :

Vykdžius scenarijų, kaip failų pavadinimus pasirenkant „test.txt“ ir „testing.txt“, pasirodo tokia išvestis. Pagal išvestį abu failai yra dabartinėje vietoje, o failas „testing.txt“ yra tuščias:

  p7-1

Ši išvestis pasirodo po scenarijaus vykdymo, kaip failų pavadinimus paėmus „f1.txt“ ir „test.txt“. Pagal išvestį failo „f1.txt“ dabartinėje vietoje nėra, o „test.txt“ failas nėra tuščias:

  p7-2

Eiti į viršų

„Jei“ teiginio naudojimas katalogo buvimui patikrinti

Katalogo egzistavimą galima patikrinti naudojant „Bash“ scenarijų dviem būdais, pavyzdžiui, naudojant failą. Vienas iš jų naudoja „-d“ operatorių su „[]“ skliaustais. Kitas būdas naudoti komandą „test“ ir „-d“ operatorių. Paimamas katalogo pavadinimas ir patikrinamas katalogo egzistavimas naudojant sąlygą „if“ su operatoriumi „-d“. Tada paimamas kitas katalogo pavadinimas ir patikrinamas failo egzistavimas naudojant „if“ teiginį su komanda „test“ ir operatoriumi „-d“.

#!/bin/bash

# Paimkite katalogo pavadinimą

skaityti -p 'Įveskite katalogo pavadinimą:' tu 1

#Patikrinkite, ar katalogas egzistuoja, ar ne, nenaudodami „testo“.

jeigu [ -d $ dir1 ]

tada

aidas $ dir1 katalogas egzistuoja“.

Kitas

aidas $ dir1 katalogo nėra“.

būti

#Pridėti naują eilutę

aidas

#Paimkite kitą katalogo pavadinimą

skaityti -p 'Įveskite kitą katalogo pavadinimą:' rež.2

#Patikrinkite, ar failas egzistuoja, ar ne, naudodami „testą“.

jeigu bandymas -d $ dir2

tada

aidas $ dir2 katalogas egzistuoja“.

Kitas

aidas $ dir2 katalogo nėra“.

būti

Išvestis :

Ši išvestis pasirodo po to, kai vykdomas scenarijus su „temp“ ir „files“ katalogų pavadinimais. Pagal išvestį abu katalogai egzistuoja dabartinėje vietoje. Tada vykdoma komanda „ls“, kad būtų patikrintas katalogų turinys:

  p8-1

Ši išvestis pasirodo po to, kai vykdomas scenarijus su 'testavimo' ir 'naujasis' katalogų pavadinimais. Pagal išvestį abiejų katalogų dabartinėje vietoje nėra. Tada komandos „ls“ išvestis rodo, kad abiejų katalogų nėra:

  p8-2

Eiti į viršų

Pareiškimo „Jei“ naudojimas su Regex

Šis scenarijus rodo įvesties duomenų patvirtinimo metodą naudojant „if“ teiginį su reguliariąja išraiška. Čia iš vartotojo paimamos dvi įvesties reikšmės ir saugomos kintamuosiuose „$bookname“ ir „$bookprice“. Sąlyga „if“ naudojama scenarijuje siekiant patikrinti, ar kintamajame „$bookname“ yra visi abėcėlės simboliai, o „$bookprice“ yra skaičius.

#!/bin/bash

#Paimkite iš vartotojo knygos pavadinimą ir kainą

aidas -n 'Įveskite knygos pavadinimą:'

skaityti knygos pavadinimas

aidas -n 'Įveskite knygos kainą:'

skaityti knygos kaina

#Patikrinkite, kad knygos pavadinime yra tik abėcėlė

jeigu ! [ [ $bookname =~ [ A-Za-z ] ] ] ; tada

aidas „Knygos pavadinimas neteisingas“.

Kitas

aidas „Knygos pavadinimas galioja“.

būti

#Patikrinkite, kad knygos kainoje yra tik skaitmenys

jeigu ! [ [ $ knygos kaina =~ [ 0 - 9 ] ] ] ; tada

aidas 'Knygos kainoje gali būti tik skaitmenys.'

Kitas

aidas 'Knygos kaina galioja.'

būti

Išvestis :

Vykdant scenarijų pasirodo tokia išvestis, kurios įvesties reikšmės yra „Bash Programming“ kaip knygos pavadinimas ir 78 kaip knygos kaina:

  9-1 p

Vykdžius scenarijų, kurio įvesties reikšmės yra 90 kaip knygos pavadinimas ir „Bash“ kaip knygos kaina, pasirodo ši išvestis:

  9-2 p

Eiti į viršų

„Atvejo“ pareiškimo naudojimas

Teiginys „atvejis“ yra teiginio „if-elif-else“ alternatyva, tačiau visų teiginio „if-elif-else“ užduočių negalima atlikti naudojant teiginį „case“. Paprastas „atvejo“ teiginio naudojimas parodytas šiame scenarijuje. Skaitinė reikšmė iš vartotojo paimama kaip einamojo mėnesio reikšmė. Tada atitinkamas mėnuo išspausdinamas, jei „atvejo“ teiginyje randama atitinkama reikšmė. Kitu atveju išspausdinamas numatytasis pranešimas.

#!/bin/bash

# Paimkite einamojo mėnesio reikšmę skaičiumi

skaityti -p 'Įveskite šiandienos mėnesį skaičiumi:' b_mėn

#Atspausdinkite tekstą prieš spausdindami mėnesio pavadinimą

aidas -n 'Dabartinis mėnesio pavadinimas yra'

#Sužinokite ir atsispausdinkite atitinkantį mėnesio pavadinimą pagal įvestį

atvejis $b_mėn in

1 | 01 ) aidas — Sausio mėn. ;;

2 | 02 ) aidas 'vasaris'. ;;

3 | 03 ) aidas 'Kovas.' ;;

4 | 04 ) aidas 'Balandis.' ;;

5 | 05 ) aidas 'Gegužė.' ;;

6 | 06 ) aidas — Birželis. ;;

7 | 07 ) aidas — Liepa. ;;

8 | 08 ) aidas 'Rugpjūtis.' ;;

9 | 09 ) aidas — Rugsėjo mėn. ;;

10 ) aidas 'Spalio mėn.' ;;

vienuolika ) aidas — Lapkričio mėn. ;;

12 ) aidas 'Gruodis'. ;;

* ) aidas 'nerastas.' ;;

esac

Išvestis :

Įvykdžius scenarijų, kurio reikšmė yra 6, pasirodo ši išvestis:

  10-1 p

Įvykdžius scenarijų, kurio reikšmė yra 09, pasirodo ši išvestis:


  10-2 p

Įvykdžius scenarijų, kurio reikšmė yra 14, pasirodo ši išvestis:

  10-3 p

Eiti į viršų

Išvada

Įvairūs sąlyginės logikos naudojimo būdai, naudojant „if“ ir „case“ teiginius, parodyti 10 šios mokymo programos pavyzdžių. Sąlyginės logikos naudojimo Bash sąvoka bus išvalyta naujiems Bash vartotojams perskaičius šią mokymo programą.