строка-шаблон) список команд;;
строка-шаблон) список команд;;
...
Esac
Строка-образец (это может быть и один символ) сравнивается со строкой-шаблоном. Если строка-образец совпадает со строкой-шаблоном, то выполняется соответствующий список команд (если команды записываются в одну строку, то ";" будет использоваться как разделитель команд).
Обычно последняя строка выбора имеет шаблон "*", что в структуре "case" означает "любое значение". Эта строка выбирается, если не произошло совпадение значения переменной (строки-образца) ни с одним из ранее записанных шаблонов.
Эта команда часто используется для организации меню. Создадим командный файл, который будет по выбору пользователя совершать ту или иную операцию с указанным файлом.
echo "Введите имя файла: "
read x
echo " Выберите какую операцию выполнить с файлом:
1 - отсортировать
2 - выдать на экран
3 - определить число строк "
read y
case $y in
1) sort < $x;;
2) cat < $x;;
3) wc -l < $x;;
*) echo " Ошибка. Нет такой команды";;
|
|
esac
Задание: Создайте меню, в котором пользователю предлагается создать, копировать, удалить, переместить, переименовать указанный файл. Все данные, необходимые для выполнения этих команд, вводятся пользователем с клавиатуры.
Оператор цикла while (с истинным условием)
Структура цикла while предпочтительнее тогда, когда неизвестен заранее точный список значений параметров или этот список должен быть получен в результате вычислений в цикле.
While условие
do
Список команд
Done
Список команд в теле цикла повторяется до тех пор, пока сохраняется истинность условия или цикл не будет прерван изнутри специальными командами ("break", "continue" или "exit"). При первом входе в цикл условие должно выполняться.
Выполнение арифметических операций: команда expr
Команда expr вычисляет значение выражения, переданного в качестве аргумента, и посылает результат на стандартный вывод. Используется для выполнения операций над переменными языка Shell.
expr 11 + 49 + 2 + 64 + 1
127 (результат)
В expr можно применять следующие арифметические операторы: +, -, *, /, % (остаток). Все операнды и операции должны быть разделены пробелами. Знак умножения следует заключать в кавычки (одинарные или двойные), например: '*', так как символ * имеет в Shell специальный смысл. Аналогично в кавычки заключаются скобки, знаки сравнений.
Еще пример использования expr (фрагмент):
count=`wc - l < $1`
tot=100
count =`expr $tot / $count`
echo $count
tot=`expr $tot + 1`
echo $tot