Оператор выбора "case" имеет структуру:
case строка in шаблон) список команд;; шаблон) список команд;; ... esac
### # case-1: Структура "case". # Уже рассматривавшийся в связи со # структурой "if" пример проще и # нагляднее можно реализовать с # помощью структуры "case". echo -n " А какую оценку получил на экзамене?: " read z case $z in 5) echo Молодец ! ;; 4) echo Все равно молодец ! ;; 3) echo Все равно ! ;; 2) echo Все ! ;; *) echo ! ;; esac
Обычно последняя строка выбора имеет шаблон "*", что в структуре "case" означает "любое значение". Эта строка выбирается, если не произошло совпадение значения переменной (здесь $z) ни с одним из ранее записанных шаблонов, ограниченных скобкой ")". Значения просматриваются в порядке записи.
### # case-2: Справочник. # Для различных фирм по имени выдается # название холдинга, в который она входит case $1 in ONE|TWO|THREE) echo Холдинг: ZERO ;; MMM|WWW) echo Холдинг: Not-Net ;; Hi|Hello|Howdoing) echo Холдинг: Привет! ;; *) echo Нет такой фирмы ;; esac
Холдинг: Привет!
Нет такой фирмы
### # case-3: Реализация меню с помощью команды "case" echo "Назовите файл, а затем (через пробел) наберите цифру, соответствующую требуемойобработке: 1 - отсортировать 2 - выдать на экран 3 - определить число строк " read x y # x - имя файла, y - что сделать case $y in 1) sort < $x ;; 2) cat < $x ;; 3) wc -l < $x ;; *) echo " Мы не знаем такой команды ! " ;; esac
Напишем команду "case-4", которая добавляет информацию к файлу, указанного первым параметром (если параметр один), со стандартного входа, либо (если 2 параметра) из файла, указанного в качестве первого параметра:
### # case-4: Добавление в файл. # Использование стандартной переменной. # "$#" - число параметров при вводе расчета # ">>" - перенаправление с добавлением в файл case $# in 1) cat >> $1 ;; 2) cat >> $2 < $1 ;; *) echo "Формат: case-4 [откуда] куда" ;; esac
Во всех других случаях (*) выдается сообщение о том, каким должен быть правильный формат команды.