Sådan mestrer du betinget logik i Bash

Sadan Mestrer Du Betinget Logik I Bash



Brugen af ​​betinget logik er en meget væsentlig del af ethvert programmeringssprog. Den betingede logik kan implementeres i Bash på forskellige måder for at løse programmeringsproblemerne. Metoderne til at bruge betinget logik i Bash gennem de forskellige typer 'if' og 'case'-sætninger til at sammenligne strengen og numeriske værdier, kontrollere det variable indhold, kontrollere eksistensen af ​​filen eller mappen osv. er vist i denne tutorial .

Liste over indhold:

  1. Brug af 'Hvis'-erklæringen
  2. Brug af 'If-Else'-erklæringen
  3. Brug af 'If-Elif-Else'-erklæringen
  4. Brug af 'Hvis'-erklæringen til at kontrollere en tom variabel
  5. Brug af 'Hvis'-erklæringen med logisk operatør
  6. Brug af de indlejrede 'Hvis'-erklæringer
  7. Brug af 'Hvis'-erklæringen til at kontrollere filens eksistens
  8. Brug af 'Hvis'-erklæringen til at kontrollere bibliotekets eksistens
  9. Brug af 'Hvis'-erklæringen med Regex
  10. Brug af 'Case'-erklæringen

Brug af 'Hvis'-erklæringen

Dette eksempel viser den simple brug af 'hvis'-sætningen i Bash. Seks typer af sammenligningsoperatorer kan bruges til at sammenligne de numeriske værdier i Bash. Disse er '-eq' (lig), '-ne' (ikke lig), '-le' (mindre end lig), '-ge' (større end lig), '-lt' (mindre end) og ' -gt” (større end). Brugen af ​​'-lt' og '-eq' vises i det følgende script, uanset om tallet er mindre end 99 eller ikke er blevet kontrolleret med '-lt'-operatoren. Tallet er lige eller ulige og kontrolleres af '-eq'-operatøren.







#!/bin/bash

#Tildel en numerisk værdi

( ( nummer = halvtreds ) )

#Tjek den numeriske værdi ved hjælp af 'if'-sætning

hvis [ $nummer -lt 99 ]

derefter

ekko 'Nummeret er gyldigt.'

være

#Tjek, om tallet er lige eller ej

hvis [ $ ( ( $nummer % 2 ) ) -ækv 0 ]

derefter

ekko 'Antallet er lige.'

være

Produktion :



Følgende output vises efter udførelse af det forrige script:



  p1





Gå til toppen

Brug af 'If-Else'-erklæringen

Brugen af ​​'hvis-else'-sætningen vises i følgende script. En strengværdi tages fra brugeren og kontrollerer, om værdien er 'BLÅ' eller ikke ved hjælp af 'if-else'-sætningen.



#!/bin/bash

#Tag en strengværdi fra brugeren

Læs -s 'Indtast din yndlingsfarve:' farve

#Tjek strengværdien ved hjælp af 'if-else'-sætningen

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

derefter

ekko 'Fin, blå farve er tilgængelig.'

andet

ekko ' $ farve er ikke tilgængelig.'

være

Produktion :

Følgende output vises efter udførelse af det forrige script, hvis 'rød' tages som input:

  p2-1

Følgende output vises efter udførelse af det forrige script, hvis 'blå' tages som input:

  p2-2

Gå til toppen

Brug af 'If-Elif-Else'-erklæringen

Brugen af ​​'if-elif-else'-sætningen vises i følgende script. Et tal tages fra brugeren og kontrolleres med de forskellige værdier, indtil der findes et match. Hvis der findes et match, udskrives den tilsvarende meddelelse. Hvis der ikke findes noget match, udskrives standardmeddelelsen.

#!/bin/bash

#Tag id-værdien fra brugeren

Læs -s 'Indtast dit serienummer:' seriel

#Tjek inputværdien ved hjælp af 'if-elif-else'-sætningen

hvis [ $serie == '4523' ]

derefter

ekko 'Du er valgt i gruppe A.'

Elif [ $serie == '8723' ]

derefter

ekko 'Du er valgt i gruppe B.'

Elif [ $serie == '3412' ]

derefter

ekko 'Du er valgt i gruppe C.'

andet

ekko 'Du er ikke valgt' .

være

Produktion:

Følgende output vises efter eksekvering af scriptet med værdien 8723:

  p3-1

Følgende output vises efter eksekvering af scriptet med værdien 9078:

  s3-2

Gå til toppen

Brug af 'Hvis'-erklæringen til at kontrollere en tom variabel

Metoden til at kontrollere, om en variabel er tom, uden at bruge en 'if'-sætning er vist i følgende script. '-z'-indstillingen bruges i 'if'-sætningen til at udføre denne opgave.

#!/bin/bash

#Tag id-værdien fra brugeren

Læs -s 'Indtast dit serienummer:' seriel

#Tjek om variablen er tom eller ej

hvis [ ! -Med $serie ]

derefter

#Tjek inputværdien ved hjælp af 'if-elif-else'-sætningen

hvis [ $serie == '690' ]

derefter

ekko 'Du er valgt i hold-1.'

Elif [ $serie == '450' ]

derefter

ekko 'Du er valgt i hold-2.'

andet

ekko 'Du er ikke valgt' .

være

andet

ekko 'Der er ikke givet noget serienummer.'

være

Produktion :

Følgende output vises efter eksekvering af scriptet med værdien 690:

  p4-1

Følgende output vises efter eksekvering af scriptet, hvis der ikke tages nogen inputværdi:

  p4-2

Gå til toppen

Brug af 'Hvis'-erklæringen med logiske operatører

Tre typer logiske operatorer kan bruges i den betingede Bash-sætning. Disse er logiske ELLER (||), logiske OG (&&) og logiske IKKE (!). En kodeværdi tages fra brugeren. Hvis inputværdien ikke er tom, kontrolleres værdien med to kodeværdier ved hjælp af logisk ELLER. Hvis værdien stemmer overens med en kode, udskrives den tilsvarende meddelelse. Hvis der ikke findes en passende kode, udskrives standardmeddelelsen.

#!/bin/bash

#Tag kursuskoden fra brugeren

Læs -s 'Indtast kursuskoden:' kode

#Tjek om variablen er tom eller ej

hvis [ ! -Med $kode ]

derefter

#Tjek inputværdien ved hjælp af 'if-elif-else'-sætningen

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

derefter

ekko 'CSE kursus.'

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

derefter

ekko 'BBA kursus.'

andet

ekko 'Ugyldig kursuskode.'

være

andet

ekko 'Der gives ingen kursuskode.'

være

Produktion :

Følgende output vises efter eksekvering af scriptet med inputværdien 'CSE-108':

  p5-1

Følgende output vises efter eksekvering af scriptet med inputværdien 'BBA-56':

  p5-2

Gå til toppen

Brug af de indlejrede 'Hvis'-erklæringer

Når en 'hvis'-betingelse bruges i en anden 'hvis'-tilstand, kaldes den en indlejret 'hvis'-sætning. Metoden til at bruge det indlejrede 'hvis' er vist i følgende script. To markeringsværdier tages fra brugeren. Hvis inputværdierne ikke er tomme, kontrollerer den første 'hvis'-betingelse, om værdien af ​​'$theory' er større end eller lig med 60 eller ej. Hvis den første 'hvis'-betingelse returnerer 'sand', kontrollerer den anden 'hvis'-betingelse, om værdien af ​​'$lab' er større end eller lig med 50 eller ej. Hvis den anden 'hvis'-betingelse også returnerer 'sand', udskrives en succesmeddelelse. Ellers udskrives en fejlmeddelelse.

#!/bin/bash

#Tag teorimærket

Læs -s 'Indtast teorimærket:' teori

#Tag laboratoriemærket

Læs -s 'Indtast laboratoriemærket:' lab

#Tjek, om variablerne er tomme eller ej

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

derefter

#Tjek inputværdierne ved hjælp af en indlejret 'if'-sætning

hvis [ $teori -ge 60 ]

derefter

hvis [ $lab -ge halvtreds ]

derefter

ekko 'Du har bestået.'

andet

ekko 'Du har fejlet.'

være

andet

ekko 'Du har fejlet.'

være

andet

ekko 'Teori- eller laboratoriemærket er tomt.'

være

Produktion :

Følgende output vises, hvis begge eller en af ​​inputværdierne er tomme:

  p6-1

Følgende output vises, hvis 78 tages som teorikarakterer og 45 tages som laboratoriekarakterer. Her returnerer den anden 'hvis'-betingelse 'falsk':

  s6-2

Følgende output vises, hvis 67 tages som teorikarakterer og 56 tages som laboratoriekarakterer. Her returnerer begge 'hvis'-betingelser 'sand':

  p6-3

Følgende output vises, hvis 50 tages som teorikarakterer og 80 tages som laboratoriekarakterer. Her returnerer den første 'hvis'-betingelse 'falsk':

  p6-4

Gå til toppen

Brug af 'Hvis'-erklæringen til at kontrollere filens eksistens

Eksistensen af ​​filen kan kontrolleres af bash-scriptet på to måder. Den ene bruger '-f' operatoren med '[]' parenteser. En anden bruger 'test'-kommandoen og '-f'-operatoren. Et filnavn tages og kontrollerer eksistensen af ​​filen ved at bruge 'hvis'-betingelsen med '-f'-operatoren. Derefter tages et andet filnavn, og kontroller eksistensen af ​​filen ved hjælp af 'if'-sætningen med 'test'-kommandoen og '-f'-operatoren.

#!/bin/bash

#Tag filnavnet

Læs -s 'Indtast et filnavn:' fn1

#Tjek om filen eksisterer eller ej uden at bruge `test`

hvis [ -f $fn1 ]

derefter

ekko ' $fn1 fil findes.'

andet

ekko ' $fn1 filen eksisterer ikke.'

være

#Tilføj ny linje

ekko

#Tag et andet filnavn

Læs -s 'Indtast et andet filnavn:' fn2

#Tjek om filen findes eller ej ved hjælp af `test`

hvis prøve -f $fn2 ; derefter

ekko ' $fn2 fil findes.'

#Tjek om filen er tom eller ej ved hjælp af `test`

hvis prøve -Med $fn2 ; derefter

ekko ' $fn2 filen er tom.'

andet

ekko ' $fn2 filen er ikke tom.'

være

andet

ekko ' $fn2 filen eksisterer ikke.'

være

Produktion :

Følgende output vises efter eksekvering af scriptet ved at tage 'test.txt' og 'testing.txt' som filnavne. Ifølge outputtet findes begge filer på den aktuelle placering, og filen 'testing.txt' er tom:

  p7-1

Følgende output vises efter eksekvering af scriptet ved at tage 'f1.txt' og 'test.txt' som filnavne. Ifølge outputtet eksisterer filen 'f1.txt' ikke på den aktuelle placering, og filen 'test.txt' er ikke tom:

  p7-2

Gå til toppen

Brug af 'Hvis'-erklæringen til at kontrollere bibliotekets eksistens

Mappens eksistens kan kontrolleres af Bash-scriptet på to måder ligesom filen. Den ene bruger '-d' operatoren med '[]' parenteser. En anden bruger 'test'-kommandoen og '-d'-operatoren. Et biblioteksnavn tages og kontrollerer bibliotekets eksistens ved at bruge 'hvis'-betingelsen med '-d'-operatoren. Derefter tages et andet mappenavn og kontrollerer eksistensen af ​​filen ved hjælp af 'if'-sætningen med 'test'-kommandoen og '-d'-operatoren.

#!/bin/bash

#Tag et mappenavn

Læs -s 'Indtast et mappenavn:' dig 1

#Tjek om mappen eksisterer eller ej uden at bruge `test`

hvis [ -d $dir1 ]

derefter

ekko ' $dir1 bibliotek findes.'

andet

ekko ' $dir1 bibliotek eksisterer ikke.'

være

#Tilføj ny linje

ekko

#Tag et andet mappenavn

Læs -s 'Indtast et andet mappenavn:' dir2

#Tjek om filen findes eller ej ved hjælp af `test`

hvis prøve -d $dir2

derefter

ekko ' $dir2 bibliotek findes.'

andet

ekko ' $dir2 bibliotek eksisterer ikke.'

være

Produktion :

Følgende output vises efter eksekvering af scriptet med mappenavnene 'temp' og 'filer'. Ifølge outputtet findes begge mapper på den aktuelle placering. Derefter udføres 'ls' kommandoen for at kontrollere indholdet af mapperne:

  p8-1

Følgende output vises efter eksekvering af scriptet med 'test' og 'nye' mappenavne. Ifølge outputtet eksisterer begge mapper ikke på den aktuelle placering. Så viser outputtet af 'ls' kommandoen, at begge mapper ikke eksisterer:

  p8-2

Gå til toppen

Brug af 'Hvis'-erklæringen med Regex

Følgende script viser metoden til at validere inputdata ved hjælp af en 'if'-sætning med regex. Her tages to inputværdier fra brugeren og gemmes i '$bookname' og '$bookprice' variablerne. 'Hvis'-betingelsen bruges i scriptet til at kontrollere, at '$bookname'-variablen indeholder alle alfabetiske tegn, og '$bookprice' indeholder et tal.

#!/bin/bash

#Tag bogens navn og pris fra brugeren

ekko -n 'Indtast bogens navn:'

Læs bognavn

ekko -n 'Indtast bogprisen:'

Læs bogpris

#Tjek, at bognavnet kun indeholder alfabetet

hvis ! [ [ ' $bognavn ' =~ [ A-Za-z ] ] ] ; derefter

ekko 'Bogens navn er ugyldigt.'

andet

ekko 'Bogens navn er gyldigt.'

være

#Tjek, at bogprisen kun indeholder tal

hvis ! [ [ ' $ bogpris ' =~ [ 0 - 9 ] ] ] ; derefter

ekko 'Bogprisen kan kun indeholde tal.'

andet

ekko 'Bogprisen er gyldig.'

være

Produktion :

Følgende output vises efter eksekvering af scriptet med inputværdierne 'Bash Programming' som bognavn og 78 som bogpris:

  p9-1

Følgende output vises efter eksekvering af scriptet med inputværdierne 90 som bognavn og 'Bash' som bogpris:

  p9-2

Gå til toppen

Brug af 'Case'-erklæringen

'Case'-erklæringen er alternativet til 'if-elif-else'-erklæringen, men alle opgaver i 'if-elif-else'-erklæringen kan ikke udføres ved hjælp af 'case'-erklæringen. Den simple brug af 'case'-sætningen er vist i følgende script. En numerisk værdi tages fra brugeren som den aktuelle månedsværdi. Derefter udskrives den tilsvarende måned, hvis der findes en tilsvarende værdi i 'case'-opgørelsen. Ellers udskrives standardmeddelelsen.

#!/bin/bash

#Tag den aktuelle månedsværdi i antal

Læs -s 'Indtast måneden i dag i antal:' b_måned

#Udskriv teksten, før du udskriver månedens navn

ekko -n 'Det aktuelle måneds navn er'

#Find ud og udskriv det matchende månedsnavn baseret på input

sag $b_måned i

1 | 01 ) ekko 'Januar.' ;;

2 | 02 ) ekko 'Februar.' ;;

3 | 03 ) ekko 'Marts.' ;;

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 'December.' ;;

* ) ekko 'ikke fundet.' ;;

esac

Produktion :

Følgende output vises efter eksekvering af scriptet med værdien 6:

  s10-1

Følgende output vises efter eksekvering af scriptet med værdien 09:


  s. 10-2

Følgende output vises efter eksekvering af scriptet med værdien 14:

  s. 10-3

Gå til toppen

Konklusion

Forskellige anvendelser af betinget logik ved hjælp af 'if' og 'case'-udsagn er vist i de 10 eksempler i denne øvelse. Konceptet med at bruge den betingede logik i Bash vil blive ryddet for de nye Bash-brugere efter at have læst denne tutorial.