V tomto článku se podíváme na případová prohlášení bash a jak je používat ve skriptech bash. Prohlášení o případu je bash vytvořený a používá se ke zjednodušení podmíněné logiky v bash skriptech.
[ Také by se vám mohlo líbit:Jak používat příkaz Declare v prostředí Linux Bash Shell ]
Jednoduše řečeno, když váš kód obsahuje více podmíněných [ if - elif - else ]
příkazy můžete nahradit podmíněné příkazy příkazy case. Koncept příkazu case je dostupný také v jiných programovacích jazycích jako C, Perl, Java, Javascript atd. V některých jazycích to bude příkaz switch case a v některých jazycích to bude příkaz case, liší se podle na jazyk, který používáte.
Porozumění syntaxi prohlášení o případu
Před použitím příkazu case ve svých skriptech musíte porozumět jeho syntaxi.
case expression in pattern1) STATEMENTS ;; pattern2 | pattern3) STATEMENTS ;; pattern-N) STATEMENTS ;; *) STATEMENTS ;; esac
Vysvětlení prohlášení výše.
- Příkaz case by měl začínat klíčovým slovem case a končit esac klíčové slovo.
- Příkaz case vyhodnotí výraz a zjistí, zda výraz odpovídá některému ze vzorů. Výraz by měl následovat za klíčovým slovem case.
- Vzory budou vyhodnoceny, a pokud budou odpovídat výrazu, provede se příkaz. Vzory a příkazy se nazývají klauzule. K ukončení klauzule použijte dvojitý středník
";;"
. - Pokud se vzor shoduje, zbývající vzory se přeskočí.
- Můžete vytvořit tolik vzorů, kolik chcete.
- Symbol hvězdičky
(*)
bude použit jako výchozí vzor. Pokud výraz neodpovídá žádnému ze vzorů, použije se výchozí vzor.
Vytvoření jednoduchého případu ve skriptu
Vytvářím jednoduchý případ, který zobrazí tým, který vyhrál Ligu mistrů na základě roku. Uživatel musí zadat rok jako vstup.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016) echo " Winner is Real Madrid";; 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Podívejte se na výše uvedený kód a výstup. Uživatel předává rok jako vstup a je uložen v proměnné WINNER . Rok bude vyhodnocen proti všem rokům uvedeným jako vzory v prohlášení o případu. Pokud rok uplynulý uživatelem neodpovídá žádnému vzoru, výchozí vzor (*)
se používá.
Je také možné vyhodnotit více vzorů v jedné klauzuli. Musíte použít "|"
symbol pro použití jednoho nebo více vzorů v klauzuli. Použijeme stejný kód z předchozího příkladu. Když se podíváte na roky 2016 a 2017, stejný tým vyhrál pohár. Namísto vytváření samostatných doložek pro roky 2016 a 2017 můžete vytvořit jedinou doložku.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; *) echo " No data available for the given option";; esac
Nyní, když uživatel předá jako vstup 2016 nebo 2017, bude vyhodnocen v první větě.
Můžete také použít porovnávání vzorů v příkazech typu case. Znovu upravuji stejný kód a přidávám další dvě klauzule k vyhodnocení pro řetězce a další roky.
#!/usr/bin/env bash read -p "Enter the year to get the winner name : " WINNER case $WINNER in 2016 | 2017) echo " Winner is Real Madrid";; 2018) echo " Winner is Liverpool";; 2019) echo " Winner is Bayern Munich";; 2020) echo " Winner is Chelsea";; [a..z]* | [A..Z]*) echo " Year should be passed as argument. Input is wrong";; [0-9][0-9][0-9][0-9]) echo "No data for the passed year..." esac
Navrhuji, abyste se podívali na ~/.bashrc
soubor a soubory pod /etc/init.d/ kde bude použit případový výpis. Procházením těchto souborů získáte určitou představu o tom, jak se používají v reálném čase.
To je pro tento článek vše. Prohlášení případu je důležitý koncept, který byste měli znát při práci se skripty shellu. Když začnete nahrazovat podmíněné příkazy příkazy case, váš kód bude čistý a udržitelný.