case/esac

Тема дорожной карты · Bash

Оператор case в Bash используется для сравнения значения с набором шаблонов, предоставляя более чистую альтернативу длинным цепочкам if/elif/else. Оператор case позволяет использовать glob-маски для шаблонов, что делает его идеальным для маршрутизации аргументов командной строки, скриптов с меню и классификации строк в автоматизации Linux. В каждом шаблоне оператора case используется двойная точка с запятой ;; для завершения ветки. В Bash 4.0 были добавлены дополнительные синтаксические возможности ;& и ;;&, которые позволяют более сложное управление потоком внутри блоков case.

Классический шаблон написания shell-скриптов — case "$1" in — маршрутизирует подкоманды скрипта, такие как start, stop и status, к соответствующим функциям-обработчикам на основе первого аргумента командной строки. Этот подход упрощает управление скриптами и делает их более структурированными и понятными.

Как это работает

Оператор case сравнивает значение с набором шаблонов, используя glob-маски, такие как *.log, [0-9]* или start|stop|restart. Этот подход позволяет более эффективно маршрутизировать аргументы командной строки и управлять скриптами. В отличие от длинных цепочек if/elif/else, оператор case обеспечивает более чистую и понятную структуру кода.

Когда применять

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

Типичные ошибки

При использовании оператора case важно правильно заключать значения в кавычки, чтобы избежать проблем с разбиением слов. Например, выражение if [ $x == "y" ] может привести к синтаксической ошибке, если $x пустой, поскольку выражение станет [ == "y" ]. Также важно различать между [ ] и [[ ]], так как они имеют разные правила разбиения слов и могут использоваться для разных целей.

Связанные понятия

Полезные ресурсы