В тази тема ще обсъдим основите на case операторите и как да ги използваме в Bash скриптове.
Изявлението Bash case е най-простата форма на IF-THEN-ELSE с много ELIF елементи. Използването на оператора case прави нашия bash скрипт по-четим и по-лесен за поддръжка. Те обикновено се прилагат за опростяване на сложни условия с множество различни възможности за избор.
Операторът Bash case следва подобна логика като оператора Javascript или C switch. Има малка разлика, както следва:
- Изявлението Bash case приема стойност веднъж и я тества многократно. Той спира да търси модел, след като го е намерил и изпълнил оператора, свързан с него, което е почти обратното в случай на оператора C switch.
Синтаксис на изявление на случай
Синтаксисът на оператора bash case е даден по-долу:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Има някои ключови моменти от изявленията за bash case:
- Всеки оператор case в bash започва с ключовата дума 'case', последвана от израза case и ключовата дума 'in'. Казусът се затваря с ключова дума 'esac'.
- Можем да приложим множество модели, разделени с | оператор. Операторът ) показва прекратяването на списък с шаблони.
- Модел, съдържащ изразите, се нарича клауза и трябва да бъде прекратен с двойна точка и запетая (;;).
- Символ звездичка (*) се използва като последен шаблон за определяне на регистъра по подразбиране. Използва се като случай по подразбиране, когато се използва като последен случай.
Как работи
На първо място, операторът case разширява израза и се опитва да съвпадне с всеки от включените шаблони. Когато намери съвпадение, всички свързани изрази се изпълняват до двойната точка и запетая (;;). След първото съвпадение случаят приключва с изходния статус на последния изпълнен оператор.
Ако няма съответстващ шаблон, изходният статус на случая е нула. В противен случай състоянието на връщане е изходното състояние на изпълнените оператори.
Ако се използва шаблонът със звездичка по подразбиране, той ще се изпълни в случай, че няма съответстващ шаблон.
Нека се опитаме да разберем този механизъм с помощта на няколко примера:
Пример 1
В този пример сме дефинирали прост сценарий, за да демонстрираме използването на оператора case.
Bash скрипт
#!/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
Изход
Пример 2
В този пример сме дефинирали комбиниран сценарий, при който има и случай по подразбиране, когато не е намерен предишен съответстващ случай.
списък с шрифтове в gimp
Bash скрипт
#!/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
Изход
Изпълнихме скрипта с три различни входа, вижте изхода по-долу: