Hvordan mestre betinget logikk i Bash

Hvordan Mestre Betinget Logikk I Bash



Bruken av betinget logikk er en svært viktig del av ethvert programmeringsspråk. Den betingede logikken kan implementeres i Bash på forskjellige måter for å løse programmeringsproblemene. Metodene for å bruke betinget logikk i Bash gjennom de forskjellige typene 'if' og 'case'-setninger for å sammenligne strengen og numeriske verdier, sjekke variabelinnholdet, kontrollere eksistensen av filen eller katalogen osv. vises i denne opplæringen .

Liste over innhold:

  1. Bruk av 'Hvis'-erklæringen
  2. Bruk av 'If-Else'-erklæringen
  3. Bruk av 'If-Elif-Else'-erklæringen
  4. Bruk av 'Hvis'-erklæringen for å sjekke en tom variabel
  5. Bruk av 'Hvis'-erklæringen med logisk operatør
  6. Bruk av de nestede 'Hvis'-erklæringene
  7. Bruk av 'Hvis'-erklæringen for å kontrollere filens eksistens
  8. Bruk av 'Hvis'-erklæringen for å kontrollere katalogeksistensen
  9. Bruk av 'Hvis'-erklæringen med Regex
  10. Bruk av 'Case'-erklæringen

Bruk av 'Hvis'-erklæringen

Dette eksemplet viser den enkle bruken av 'if'-setningen i Bash. Seks typer sammenligningsoperatorer kan brukes til å sammenligne de numeriske verdiene i Bash. Disse er '-eq' (lik), '-ne' (ikke lik), '-le' (mindre enn lik), '-ge' (større enn lik), '-lt' (mindre enn) og ' -gt” (større enn). Bruken av '-lt' og '-eq' vises i følgende skript enten tallet er mindre enn 99 eller ikke har blitt sjekket med '-lt'-operatoren. Tallet er partall eller oddetall og kontrolleres av '-eq'-operatøren.







#!/bin/bash

#Tildel en numerisk verdi

( ( Antall = femti ) )

#Sjekk den numeriske verdien ved å bruke 'if'-setningen

hvis [ $nummer -lt 99 ]

deretter

ekko 'Nummeret er gyldig.'

være

#Sjekk om tallet er partall eller ikke

hvis [ $ ( ( $nummer % 2 ) ) -eq 0 ]

deretter

ekko 'Tall er partall.'

være

Produksjon :



Følgende utdata vises etter å ha utført det forrige skriptet:



  p1





Gå til toppen

Bruk av 'If-Else'-erklæringen

Bruken av 'if-else'-setningen vises i følgende skript. En strengverdi tas fra brukeren og sjekker om verdien er 'BLÅ' eller ikke ved å bruke 'if-else'-setningen.



#!/bin/bash

#Ta en strengverdi fra brukeren

lese -s 'Skriv inn favorittfargen din:' farge

#Sjekk strengverdien ved å bruke 'if-else'-setningen

hvis [ ${farge^^} == 'BLÅ' ]

deretter

ekko 'Fint, blå farge er tilgjengelig.'

ellers

ekko ' $farge er ikke tilgjengelig.'

være

Produksjon :

Følgende utdata vises etter utføring av det forrige skriptet hvis 'rød' tas som input:

  p2-1

Følgende utdata vises etter å ha utført det forrige skriptet hvis 'blått' tas som input:

  s2-2

Gå til toppen

Bruk av 'If-Elif-Else'-erklæringen

Bruken av 'if-elif-else'-setningen vises i følgende skript. Et tall tas fra brukeren og sjekkes med de forskjellige verdiene inntil det blir funnet match. Hvis noen samsvar blir funnet, skrives den tilsvarende meldingen ut. Hvis ingen treff blir funnet, skrives standardmeldingen ut.

#!/bin/bash

#Ta id-verdien fra brukeren

lese -s 'Skriv inn serienummeret ditt:' serie

#Sjekk inndataverdien ved å bruke 'if-elif-else'-setningen

hvis [ $serie == '4523' ]

deretter

ekko 'Du er valgt i gruppe A.'

Elif [ $serie == '8723' ]

deretter

ekko 'Du er valgt i gruppe B.'

Elif [ $serie == '3412' ]

deretter

ekko 'Du er valgt i gruppe C.'

ellers

ekko 'Du er ikke valgt' .

være

Produksjon:

Følgende utdata vises etter utføring av skriptet med verdien 8723:

  s3-1

Følgende utdata vises etter utføring av skriptet med verdien 9078:

  s3-2

Gå til toppen

Bruk av 'Hvis'-erklæringen for å sjekke en tom variabel

Metoden for å sjekke om en variabel er tom uten å bruke en 'if'-setning vises i følgende skript. Alternativet '-z' brukes i 'if'-setningen for å utføre denne oppgaven.

#!/bin/bash

#Ta id-verdien fra brukeren

lese -s 'Skriv inn serienummeret ditt:' serie

#Sjekk om variabelen er tom eller ikke

hvis [ ! -Med $serie ]

deretter

#Sjekk inndataverdien ved å bruke 'if-elif-else'-setningen

hvis [ $serie == '690' ]

deretter

ekko 'Du er valgt i lag-1.'

Elif [ $serie == '450' ]

deretter

ekko 'Du er valgt ut i lag-2.'

ellers

ekko 'Du er ikke valgt' .

være

ellers

ekko 'Ingen serienummer er gitt.'

være

Produksjon :

Følgende utdata vises etter utføring av skriptet med verdien 690:

  s4-1

Følgende utdata vises etter utføring av skriptet hvis ingen inngangsverdi er tatt:

  s4-2

Gå til toppen

Bruk av 'Hvis'-erklæringen med logiske operatører

Tre typer logiske operatorer kan brukes i den betingede Bash-setningen. Disse er logiske ELLER (||), logiske OG (&&), og logiske IKKE (!). En kodeverdi tas fra brukeren. Hvis inngangsverdien ikke er tom, kontrolleres verdien med to kodeverdier ved bruk av logisk ELLER. Hvis verdien samsvarer med en kode, skrives den tilsvarende meldingen ut. Hvis ingen samsvarende kode blir funnet, skrives standardmeldingen ut.

#!/bin/bash

#Ta kurskoden fra brukeren

lese -s 'Skriv inn kurskoden:' kode

#Sjekk om variabelen er tom eller ikke

hvis [ ! -Med $kode ]

deretter

#Sjekk inndataverdien ved å bruke 'if-elif-else'-setningen

hvis [ [ $kode == 'CSE-106' || $kode == 'CSE-108' ] ]

deretter

ekko 'CSE-kurs.'

Elif [ [ $kode == 'BBA-203' || $kode == 'BBA-202' ] ]

deretter

ekko 'BBA-kurs.'

ellers

ekko 'Ugyldig kurskode.'

være

ellers

ekko 'Ingen kurskode er gitt.'

være

Produksjon :

Følgende utdata vises etter utføring av skriptet med inngangsverdien 'CSE-108':

  p5-1

Følgende utdata vises etter utføring av skriptet med inngangsverdien 'BBA-56':

  p5-2

Gå til toppen

Bruk av de nestede 'Hvis'-erklæringene

Når en 'if'-betingelse brukes i en annen 'if'-betingelse, kalles den en nestet 'if'-setning. Metoden for å bruke nestede 'hvis' vises i følgende skript. To merkeverdier tas fra brukeren. Hvis inngangsverdiene ikke er tomme, kontrollerer den første 'hvis'-betingelsen om verdien til '$theory' er større enn eller lik 60 eller ikke. Hvis den første 'if'-betingelsen returnerer 'true', kontrollerer den andre 'if'-betingelsen om verdien av '$lab' er større enn eller lik 50 eller ikke. Hvis den andre 'hvis'-betingelsen også returnerer 'true', skrives en suksessmelding ut. Ellers skrives en feilmelding ut.

#!/bin/bash

#Ta teorimerket

lese -s 'Skriv inn teorimerket:' teori

#Ta laboratoriemerket

lese -s 'Skriv inn laboratoriemerket:' lab

#Sjekk om variablene er tomme eller ikke

hvis [ [ ! -Med $teori && ! -Med $lab ] ]

deretter

#Sjekk inndataverdiene ved å bruke en nestet 'if'-setning

hvis [ $teori -ge 60 ]

deretter

hvis [ $lab -ge femti ]

deretter

ekko 'Du har bestått.'

ellers

ekko 'Du har mislyktes.'

være

ellers

ekko 'Du har mislyktes.'

være

ellers

ekko 'Teori- eller laboratoriemerket er tomt.'

være

Produksjon :

Følgende utgang vises hvis begge eller én av inngangsverdiene er tomme:

  s6-1

Følgende utdata vises hvis 78 tas som teorikarakter og 45 tas som laboratoriekarakter. Her returnerer den andre 'hvis'-betingelsen 'false':

  s6-2

Følgende utdata vises hvis 67 tas som teorikarakterer og 56 tas som laboratoriekarakterer. Her returnerer begge 'hvis'-betingelsene 'true':

  s6-3

Følgende utdata vises hvis 50 tas som teorikarakter og 80 tas som laboratoriekarakterer. Her returnerer den første 'hvis'-betingelsen 'false':

  s6-4

Gå til toppen

Bruk av 'Hvis'-erklæringen for å kontrollere filens eksistens

Eksistensen av filen kan kontrolleres av bash-skriptet på to måter. Den ene bruker '-f'-operatoren med '[]'-parenteser. En annen bruker 'test'-kommandoen og '-f'-operatøren. Et filnavn blir tatt og kontrollerer eksistensen av filen ved å bruke 'if'-betingelsen med '-f'-operatoren. Deretter tas et annet filnavn og kontroller eksistensen av filen ved å bruke 'if'-setningen med 'test'-kommandoen og '-f'-operatoren.

#!/bin/bash

#Ta filnavnet

lese -s 'Skriv inn et filnavn:' fn1

#Sjekk om filen eksisterer eller ikke uten å bruke `test`

hvis [ -f $fn1 ]

deretter

ekko ' $fn1 Filen eksisterer.'

ellers

ekko ' $fn1 Filen eksisterer ikke.'

være

#Legg til ny linje

ekko

#Ta et annet filnavn

lese -s 'Skriv inn et annet filnavn:' fn2

#Sjekk om filen eksisterer eller ikke ved å bruke `test`

hvis test -f $fn2 ; deretter

ekko ' $fn2 Filen eksisterer.'

#Sjekk om filen er tom eller ikke ved å bruke `test`

hvis test -Med $fn2 ; deretter

ekko ' $fn2 filen er tom.'

ellers

ekko ' $fn2 filen er ikke tom.'

være

ellers

ekko ' $fn2 Filen eksisterer ikke.'

være

Produksjon :

Følgende utdata vises etter utføring av skriptet ved å ta 'test.txt' og 'testing.txt' som filnavn. I henhold til utdataene finnes begge filene på gjeldende plassering, og 'testing.txt'-filen er tom:

  p7-1

Følgende utdata vises etter utføring av skriptet ved å ta 'f1.txt' og 'test.txt' som filnavn. I henhold til utdataene eksisterer ikke 'f1.txt'-filen på gjeldende plassering, og 'test.txt'-filen er ikke tom:

  s7-2

Gå til toppen

Bruk av 'Hvis'-erklæringen for å kontrollere katalogeksistensen

Eksistensen av katalogen kan kontrolleres av Bash-skriptet på to måter som filen. Den ene bruker '-d'-operatoren med '[]'-parenteser. En annen bruker 'test'-kommandoen og '-d'-operatoren. Et katalognavn blir tatt og kontrollerer eksistensen av katalogen ved å bruke 'hvis'-betingelsen med '-d'-operatøren. Deretter blir et annet katalognavn tatt og kontrollerer eksistensen av filen ved å bruke 'if'-setningen med 'test'-kommandoen og '-d'-operatoren.

#!/bin/bash

#Ta et katalognavn

lese -s 'Skriv inn et katalognavn:' du 1

#Sjekk om katalogen eksisterer eller ikke uten å bruke `test`

hvis [ -d $dir1 ]

deretter

ekko ' $dir1 katalog finnes.'

ellers

ekko ' $dir1 katalogen eksisterer ikke.'

være

#Legg til ny linje

ekko

#Ta et annet katalognavn

lese -s 'Skriv inn et annet katalognavn:' dir2

#Sjekk om filen eksisterer eller ikke ved å bruke `test`

hvis test -d $dir2

deretter

ekko ' $dir2 katalog finnes.'

ellers

ekko ' $dir2 katalogen eksisterer ikke.'

være

Produksjon :

Følgende utdata vises etter utføring av skriptet med 'temp' og 'files' katalognavn. I henhold til utdataene finnes begge katalogene på gjeldende plassering. Deretter utføres 'ls'-kommandoen for å sjekke innholdet i katalogene:

  p8-1

Følgende utdata vises etter utføring av skriptet med 'testing' og 'nye' katalognavn. I følge utdataene eksisterer ikke begge katalogene på den nåværende plasseringen. Deretter viser utdataene fra 'ls'-kommandoen at begge katalogene ikke eksisterer:

  s8-2

Gå til toppen

Bruk av 'Hvis'-erklæringen med Regex

Følgende skript viser metoden for å validere inndataene ved å bruke en 'if'-setning med regex. Her hentes to inngangsverdier fra brukeren og lagres i variablene '$bookname' og '$bookprice'. 'if'-betingelsen brukes i skriptet for å kontrollere at '$bookname'-variabelen inneholder alle alfabetiske tegn og '$bookprice' inneholder et tall.

#!/bin/bash

#Ta boknavn og pris fra brukeren

ekko -n 'Skriv inn boknavnet:'

lese boknavn

ekko -n 'Skriv inn bokprisen:'

lese bokpris

#Sjekk at boknavnet bare inneholder alfabetet

hvis ! [ [ ' $boknavn ' =~ [ A-Za-z ] ] ] ; deretter

ekko 'Bokens navn er ugyldig.'

ellers

ekko 'Bokens navn er gyldig.'

være

#Sjekk at bokprisen kun inneholder siffer

hvis ! [ [ ' $bokpris ' =~ [ 0 - 9 ] ] ] ; deretter

ekko 'Bokprisen kan bare inneholde siffer.'

ellers

ekko 'Bokprisen er gyldig.'

være

Produksjon :

Følgende utdata vises etter utføring av skriptet med inngangsverdiene 'Bash Programming' som boknavn og 78 som bokpris:

  s9-1

Følgende utdata vises etter utførelse av skriptet med inngangsverdiene 90 som boknavn og 'Bash' som bokpris:

  s9-2

Gå til toppen

Bruk av 'Case'-erklæringen

'case'-setningen er alternativet til 'if-elif-else'-setningen, men alle oppgaver i 'if-elif-else'-setningen kan ikke gjøres ved å bruke 'case'-setningen. Den enkle bruken av 'case'-setningen vises i følgende skript. En numerisk verdi tas fra brukeren som gjeldende månedsverdi. Deretter skrives den tilsvarende måneden ut hvis det finnes en samsvarende verdi i 'case'-utskriften. Ellers skrives standardmeldingen ut.

#!/bin/bash

#Ta den gjeldende månedsverdien i antall

lese -s 'Skriv inn måneden i dag i antall:' b_måned

#Skriv ut teksten før du skriver ut månedsnavnet

ekko -n 'Gjeldende månedsnavn er'

#Finn ut og skriv ut det samsvarende månedsnavnet basert på inndataene

sak $b_month i

1 | 01 ) ekko 'Januar.' ;;

2 | 02 ) ekko 'Februar.' ;;

3 | 03 ) ekko 'Mars.' ;;

4 | 04 ) ekko 'April.' ;;

5 | 05 ) ekko 'Kan.' ;;

6 | 06 ) ekko 'Juni.' ;;

7 | 07 ) ekko 'Juli.' ;;

8 | 08 ) ekko 'August.' ;;

9 | 09 ) ekko 'September.' ;;

10 ) ekko 'Oktober.' ;;

elleve ) ekko 'November.' ;;

12 ) ekko 'Desember.' ;;

* ) ekko 'ikke funnet.' ;;

esac

Produksjon :

Følgende utdata vises etter utføring av skriptet med verdien 6:

  s10-1

Følgende utdata vises etter utføring av skriptet med verdien 09:


  s10-2

Følgende utdata vises etter utføring av skriptet med verdien 14:

  s10-3

Gå til toppen

Konklusjon

Ulike bruk av betinget logikk ved å bruke 'if' og 'case'-setningene er vist i de 10 eksemplene i denne opplæringen. Konseptet med å bruke den betingede logikken i Bash vil bli fjernet for de nye Bash-brukerne etter å ha lest denne opplæringen.