In dit onderwerp bespreken we de basisprincipes van case-instructies en hoe u deze kunt gebruiken in Bash-scripts.
De Bash-casusverklaring is de eenvoudigste vorm van IF-THEN-ELSE met veel ELIF-elementen. Het gebruik van de case-instructie maakt ons bash-script leesbaarder en gemakkelijker te onderhouden. Deze worden over het algemeen toegepast om de complexe omstandigheden met meerdere verschillende keuzes te vereenvoudigen.
De Bash case-instructie volgt een soortgelijke logica als de Javascript- of C-switch-instructie. Er is een klein verschil, namelijk:
- De Bash case-instructie neemt één keer een waarde aan en test die waarde meerdere keren. Het stopt met zoeken naar een patroon zodra het het heeft gevonden en de bijbehorende instructie heeft uitgevoerd, wat bijna het tegenovergestelde is in het geval van de C-switch-instructie.
Syntaxis van casusverklaring
De syntaxis van de bash-case-instructie wordt hieronder gegeven:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Er zijn enkele kernpunten van bash-casusverklaringen:
- Elke case-instructie in bash begint met het trefwoord 'case', gevolgd door de case-expressie en het trefwoord 'in'. De case-instructie wordt afgesloten met het trefwoord 'esac'.
- We kunnen meerdere patronen toepassen, gescheiden door | exploitant. De operator ) geeft het einde van een patroonlijst aan.
- Een patroon dat de instructies bevat, wordt een clausule genoemd en moet worden afgesloten met een dubbele puntkomma (;;).
- Een asterisk-symbool (*) wordt gebruikt als laatste patroon om het standaardgeval te definiëren. Het wordt gebruikt als standaardgeval wanneer het als laatste geval wordt gebruikt.
Hoe het werkt
Allereerst breidt de case-instructie de uitdrukking uit en probeert deze te matchen met elk van de opgenomen patronen. Wanneer er een overeenkomst wordt gevonden, worden alle gekoppelde instructies uitgevoerd tot aan de dubbele puntkomma (;;). Na de eerste match eindigt de case met de exit-status van de laatst uitgevoerde instructie.
Als er geen passend patroon is, is de uitgangsstatus van de zaak nul. Anders is de return-status de exit-status van de uitgevoerde instructies.
Als het standaard asteriskpatroon wordt gebruikt, wordt dit uitgevoerd als er geen overeenkomend patroon is.
Laten we proberen dit mechanisme te begrijpen met behulp van een paar voorbeelden:
voorbeeld 1
In dit voorbeeld hebben we een eenvoudig scenario gedefinieerd om het gebruik van de case-instructie te demonstreren.
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
Uitvoer
Voorbeeld 2
In dit voorbeeld hebben we een gecombineerd scenario gedefinieerd waarin er ook een standaardgeval is wanneer er geen eerder overeenkomend geval is gevonden.
c# voorbeeldcode
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
Uitvoer
We hebben het script met drie verschillende invoer uitgevoerd, bekijk de uitvoer hieronder: