- Bruk av 'Hvis'-erklæringen
- Bruk av 'If-Else'-erklæringen
- Bruk av 'If-Elif-Else'-erklæringen
- Bruk av 'Hvis'-erklæringen for å sjekke en tom variabel
- Bruk av 'Hvis'-erklæringen med logisk operatør
- Bruk av de nestede 'Hvis'-erklæringene
- Bruk av 'Hvis'-erklæringen for å kontrollere filens eksistens
- Bruk av 'Hvis'-erklæringen for å kontrollere katalogeksistensen
- Bruk av 'Hvis'-erklæringen med Regex
- 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:
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:
Følgende utdata vises etter å ha utført det forrige skriptet hvis 'blått' tas som input:
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:
Følgende utdata vises etter utføring av skriptet med verdien 9078:
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:
Følgende utdata vises etter utføring av skriptet hvis ingen inngangsverdi er tatt:
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':
Følgende utdata vises etter utføring av skriptet med inngangsverdien 'BBA-56':
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:
Følgende utdata vises hvis 78 tas som teorikarakter og 45 tas som laboratoriekarakter. Her returnerer den andre 'hvis'-betingelsen 'false':
Følgende utdata vises hvis 67 tas som teorikarakterer og 56 tas som laboratoriekarakterer. Her returnerer begge 'hvis'-betingelsene 'true':
Følgende utdata vises hvis 50 tas som teorikarakter og 80 tas som laboratoriekarakterer. Her returnerer den første 'hvis'-betingelsen 'false':
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:
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:
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:
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:
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:
Følgende utdata vises etter utførelse av skriptet med inngangsverdiene 90 som boknavn og 'Bash' som bokpris:
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:
Følgende utdata vises etter utføring av skriptet med verdien 09:
Følgende utdata vises etter utføring av skriptet med verdien 14:
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.