GNU/Linux >> Znalost Linux >  >> Linux

Jak pracovat s příkazem Case ve skriptech Bash

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ý.


Linux
  1. Jak přimět Vim, aby správně spolupracoval s Tmux?

  2. Jak spárovat vzory bez rozlišení malých a velkých písmen s Ls?

  3. Bash If-Else prohlášení s příklady

  1. Jak napsat Bash skript s příklady

  2. Jak nastavit Bash, aby spouštěl *.exe s Mono?

  3. 5 Příklady prohlášení o případu Bash

  1. Bash case Syntaxe a příklady

  2. Bash pokračovat:Jak obnovit smyčku

  3. Jak pracovat se skupinami balíčků dnf