- Brug af 'Hvis'-erklæringen
- Brug af 'If-Else'-erklæringen
- Brug af 'If-Elif-Else'-erklæringen
- Brug af 'Hvis'-erklæringen til at kontrollere en tom variabel
- Brug af 'Hvis'-erklæringen med logisk operatør
- Brug af de indlejrede 'Hvis'-erklæringer
- Brug af 'Hvis'-erklæringen til at kontrollere filens eksistens
- Brug af 'Hvis'-erklæringen til at kontrollere bibliotekets eksistens
- Brug af 'Hvis'-erklæringen med Regex
- 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:
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:
Følgende output vises efter udførelse af det forrige script, hvis 'blå' tages som input:
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:
Følgende output vises efter eksekvering af scriptet med værdien 9078:
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:
Følgende output vises efter eksekvering af scriptet, hvis der ikke tages nogen inputværdi:
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':
Følgende output vises efter eksekvering af scriptet med inputværdien 'BBA-56':
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:
Følgende output vises, hvis 78 tages som teorikarakterer og 45 tages som laboratoriekarakterer. Her returnerer den anden 'hvis'-betingelse 'falsk':
Følgende output vises, hvis 67 tages som teorikarakterer og 56 tages som laboratoriekarakterer. Her returnerer begge 'hvis'-betingelser 'sand':
Følgende output vises, hvis 50 tages som teorikarakterer og 80 tages som laboratoriekarakterer. Her returnerer den første 'hvis'-betingelse 'falsk':
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:
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:
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:
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:
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:
Følgende output vises efter eksekvering af scriptet med inputværdierne 90 som bognavn og 'Bash' som bogpris:
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:
Følgende output vises efter eksekvering af scriptet med værdien 09:
Følgende output vises efter eksekvering af scriptet med værdien 14:
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.