V tomto tématu probereme základy případových příkazů a jak je používat ve skriptech Bash.
Příkaz Bash case je nejjednodušší formou IF-THEN-ELSE s mnoha prvky ELIF. Pomocí příkazu case je náš bash skript čitelnější a snadněji se udržuje. Ty se obecně používají ke zjednodušení složitých podmínek s více různými možnostmi.
Příkaz Bash case se řídí podobnou logikou jako příkaz Javascript nebo C switch. Je zde malý rozdíl, a to následovně:
- Příkaz Bash case nabývá hodnotu jednou a testuje tuto hodnotu vícekrát. Přestane hledat vzor, jakmile jej najde a provede příkaz s ním spojený, což je téměř opak v případě příkazu C switch.
Syntaxe prohlášení o případu
Syntaxe příkazu bash case je uvedena níže:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Existuje několik klíčových bodů prohlášení bash case:
- Každý případ případu v bash začíná klíčovým slovem 'case', následovaným výrazem případu a klíčovým slovem 'in'. Příkaz případu je uzavřen klíčovým slovem 'esac'.
- Můžeme použít více vzorů oddělených | operátor. Operátor ) označuje ukončení seznamu vzorů.
- Vzor obsahující příkazy se nazývá klauzule a musí být ukončen dvojitým středníkem (;;).
- Symbol hvězdičky (*) se používá jako konečný vzor k definování výchozího případu. Používá se jako výchozí případ, když je použit jako poslední případ.
Jak to funguje
Za prvé, příkaz case rozšiřuje výraz a pokouší se o shodu s každým ze zahrnutých vzorů. Když najde shodu, všechny propojené příkazy se provedou až do dvojitého středníku (;;). Po první shodě se případ ukončí stavem ukončení posledního provedeného příkazu.
Pokud neexistuje žádný odpovídající vzor, výstupní stav případu je nula. Jinak je návratový stav výstupním stavem provedených příkazů.
Pokud je použit výchozí vzor hvězdičky, bude proveden v případě, že neexistuje žádný odpovídající vzor.
Pokusme se tento mechanismus pochopit pomocí několika příkladů:
Příklad 1
V tomto příkladu jsme definovali jednoduchý scénář, který demonstruje použití příkazu case.
Bash skript
#!/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
Výstup
Příklad 2
V tomto příkladu jsme definovali kombinovaný scénář, kde také existuje výchozí případ, kdy není nalezen žádný předchozí odpovídající případ.
java scan.nextstring
Bash skript
#!/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
Výstup
Spustili jsme skript se třemi různými vstupy, podívejte se na výstup níže: