Case в Bash

Thank you for reading this post, don't forget to subscribe!

Опера­то­ры case в Bash обыч­но исполь­зу­ют­ся для упро­ще­ния слож­ных усло­вий, когда у вас есть несколь­ко вари­ан­тов. Исполь­зо­ва­ние опе­ра­то­ра case вме­сто вло­жен­но­го опе­ра­то­ра if помо­жет вам сде­лать ваши bash-сце­на­рии более удо­бо­чи­та­е­мы­ми и более про­сты­ми в обслуживании.

Опе­ра­тор case в Bash име­ет схо­жую кон­цеп­цию с опе­ра­то­ром пере­клю­че­ния Javascript или C. Основ­ное отли­чие состо­ит в том, что, в отли­чие от опе­ра­то­ра C switch, опе­ра­тор case не про­дол­жа­ет поиск соот­вет­ствия шаб­ло­ну после того, как он нашел один и выпол­нил опе­ра­то­ры, свя­зан­ные с этим шаблоном.

В этой ста­тье мы рас­смот­рим осно­вы инструк­ций слу­чая Bash и пока­жем, как их исполь­зо­вать в сце­на­ри­ях оболочки.

 

Синтаксис описания case

Опе­ра­тор case име­ет сле­ду­ю­щую форму:

  • Каж­дый опе­ра­тор case начи­на­ет­ся с клю­че­во­го сло­ва case, за кото­рым сле­ду­ет выра­же­ние case и клю­че­вое сло­во in. Утвер­жде­ние закан­чи­ва­ет­ся клю­че­вым сло­вом esac.
  • Вы може­те исполь­зо­вать несколь­ко шаб­ло­нов, раз­де­лен­ных опе­ра­то­ром |. Опе­ра­тор ) завер­ша­ет спи­сок шаблонов.
  • Шаб­лон может иметь спе­ци­аль­ные символы.
  • Шаб­лон и свя­зан­ные с ним коман­ды назы­ва­ют­ся предложениями.
  • Каж­дый пункт дол­жен закан­чи­вать­ся на ;;.
  • Коман­ды, соот­вет­ству­ю­щие пер­во­му шаб­ло­ну, кото­рый соот­вет­ству­ет выра­же­нию, выполняются.
  • Обыч­ной прак­ти­кой явля­ет­ся исполь­зо­ва­ние под­ста­но­воч­но­го зна­ка звез­доч­ки ( *) в каче­стве окон­ча­тель­но­го шаб­ло­на для опре­де­ле­ния реги­стра по умол­ча­нию. Этот шаб­лон все­гда будет совпадать.
  • Если не най­де­но ни одно­го шаб­ло­на, воз­вра­ща­е­мый ста­тус равен нулю. В про­тив­ном слу­чае воз­вра­ща­е­мый ста­тус – это ста­тус завер­ше­ния выпол­нен­ных команд.

 

Пример заявления case

Вот при­мер исполь­зо­ва­ния опе­ра­то­ра case в bash-скрип­те, кото­рый будет печа­тать офи­ци­аль­ный язык дан­ной страны:

languages.sh

 

Читать  Исполь­зо­ва­ние коман­ды Basename в Bash Scripts

Сохра­ни­те поль­зо­ва­тель­ский скрипт в виде фай­ла и запу­сти­те его из команд­ной строки.

 

Скрипт попро­сит вас вве­сти стра­ну. Напри­мер, если вы вве­де­те «Russia», она будет соот­вет­ство­вать пер­во­му шаб­ло­ну, и коман­да echo в этом пред­ло­же­нии будет выполнена.

Скрипт выве­дет сле­ду­ю­щий вывод:

 

Если вы вво­ди­те стра­ну, кото­рая не соот­вет­ству­ет ни одно­му дру­го­му шаб­ло­ну, кро­ме под­ста­но­воч­но­го сим­во­ла по умол­ча­нию, ска­жем, Ukraine, скрипт выпол­нит коман­ду echo внут­ри пред­ло­же­ния по умолчанию.

 

Заключение

К насто­я­ще­му вре­ме­ни вы долж­ны хоро­шо пони­мать, как писать опе­ра­тор case. Он часто исполь­зу­ют­ся для пере­да­чи пара­мет­ров в сце­на­рий обо­лоч­ки из команд­ной стро­ки. Напри­мер, сце­на­рии ини­ци­а­ли­за­ции исполь­зу­ют опе­ра­то­ры case для запус­ка, оста­нов­ки или пере­за­пус­ка служб.