I dette emne vil vi diskutere det grundlæggende i case-udsagn, og hvordan man bruger dem i Bash-scripts.
Bash-casesætningen er den enkleste form for IF-THEN-ELSE med mange ELIF-elementer. Brug af case-erklæringen gør vores bash-script mere læsbart og lettere at vedligeholde. Disse anvendes generelt for at forenkle de komplekse forhold med flere forskellige valg.
Bash-casesætningen følger en lignende logik som Javascript- eller C-switch-sætningen. Der er en lille forskel, som følger:
- Bash-casesætningen tager en værdi én gang og tester denne værdi flere gange. Det stopper med at søge efter et mønster, når det har fundet det og udført sætningen forbundet med det, hvilket er næsten det modsatte i tilfælde af C switch-sætningen.
Case Statement Syntaks
Syntaks for bash-casesætningen er angivet nedenfor:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Der er nogle nøglepunkter i bash-caseudsagn:
- Hver case-sætning i bash starter med nøgleordet 'case' efterfulgt af case-udtrykket og 'in' nøgleordet. Sagsfremstillingen afsluttes med 'esac' søgeord.
- Vi kan anvende flere mønstre adskilt af | operatør. Operatoren ) angiver afslutningen af en mønsterliste.
- Et mønster, der indeholder udsagn, kaldes en klausul, og det skal afsluttes med dobbelt semikolon (;;).
- Et stjernesymbol (*) bruges som et endeligt mønster til at definere standardsalen. Det bruges som standard tilfælde, når det bruges som det sidste tilfælde.
Hvordan det virker
Først og fremmest udvider case-sætningen udtrykket og forsøger at matche med hvert af de inkluderede mønstre. Når den finder et match, udføres alle de sammenkædede udsagn indtil det dobbelte semikolon (;;). Efter det første match afsluttes sagen med exitstatus for den sidst udførte sætning.
Hvis der ikke er noget matchende mønster, er sagens exitstatus nul. Ellers er returneringsstatus exitstatus for de udførte udsagn.
Hvis standardstjernemønsteret bruges, vil det blive udført i tilfælde af ikke matchende mønster.
Lad os prøve at forstå denne mekanisme ved hjælp af et par eksempler:
Eksempel 1
I dette eksempel har vi defineret et simpelt scenarie for at demonstrere brugen af case-sætningen.
Bash Script
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
Produktion
Eksempel 2
I dette eksempel har vi defineret et kombineret scenarie, hvor der også er en standardsag, når der ikke findes nogen tidligere matchet sag.
xampp alternativ
Bash Script
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
Produktion
Vi har kørt scriptet med tre forskellige input, tjek outputtet nedenfor: