În acest subiect, vom discuta elementele de bază ale declarațiilor case și cum să le folosim în scripturile Bash.
Declarația de caz Bash este cea mai simplă formă de IF-THEN-ELSE cu multe elemente ELIF. Utilizarea declarației case face scriptul nostru bash mai lizibil și mai ușor de întreținut. Acestea sunt în general aplicate pentru a simplifica condițiile complexe având mai multe opțiuni diferite.
Instrucțiunea Bash case urmează o logică similară cu instrucțiunea Javascript sau C switch. Există o mică diferență, după cum urmează:
- Declarația Bash case ia o valoare o dată și testează această valoare de mai multe ori. Se oprește căutarea unui model odată ce l-a găsit și a executat instrucțiunea legată de acesta, ceea ce este aproape opus în cazul instrucțiunii C switch.
Sintaxa declarației cazului
Sintaxa instrucțiunii bash case este dată mai jos:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Există câteva puncte cheie ale declarațiilor bash case:
- Fiecare instrucțiune case din bash începe cu cuvântul cheie „case”, urmat de expresia case și cuvântul cheie „in”. Declarația de caz este închisă cu cuvântul cheie „esac”.
- Putem aplica mai multe modele separate prin | operator. Operatorul ) indică terminarea unei liste de modele.
- Un model care conține instrucțiunile este denumit clauză și trebuie încheiat cu punct și virgulă dublă (;;).
- Un simbol asterisc (*) este folosit ca model final pentru a defini cazul implicit. Este folosit ca caz implicit atunci când este folosit ca ultimul caz.
Cum functioneaza
În primul rând, declarația case extinde expresia și încearcă să se potrivească cu fiecare dintre modelele incluse. Când găsește o potrivire, toate instrucțiunile legate sunt executate până la punctul dublu (;;). După prima potrivire, case se termină cu starea de ieșire a ultimei instrucțiuni executate.
Dacă nu există un model potrivit, starea de ieșire a cazului este zero. În caz contrar, starea de returnare este starea de ieșire a instrucțiunilor executate.
Dacă este utilizat modelul standard de asterisc, acesta va fi executat în cazul în care nu există un model potrivit.
Să încercăm să înțelegem acest mecanism cu ajutorul câtorva exemple:
Exemplul 1
În acest exemplu, am definit un scenariu simplu pentru a demonstra utilizarea declarației case.
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
Ieșire
Exemplul 2
În acest exemplu, am definit un scenariu combinat în care există și un caz implicit când nu se găsește niciun caz potrivit anterior.
diferența dintre program și script
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
Ieșire
Am rulat scriptul cu trei intrări diferite, verificați rezultatul de mai jos: