# Сейчас сценарий считывает нажатую клавишу и завершается.
# Измените его так, чтобы сценарий продолжал отвечать на нажатия клавиш,
# но завершался бы только после ввода символа "X".
# Подсказка: заключите все в цикл "while".
Пример 10-25. Создание меню с помощью case
# Грубый пример базы данных
echo "Выберите интересующую Вас персону:"
# Обратите внимание: переменная взята в кавычки.
# Пользователь может ввести как заглавную, так и строчную букву.
echo "Hardscrabble, CO 80753"
echo "(303) 734-9892 fax"
echo "Старый друг и партнер по бизнесу"
# Обратите внимание: блок кода, анализирующий конкретный выбор, завершается
# двумя символами "точка-с-запятой".
echo "249 E. 7th St., Apt. 19"
echo "New York, NY 10009"
echo "(212) 533-9972 fax"
echo "milliej@loisaida.com"
echo "День рождения: 11 февраля"
# Информация о Smith и Zane будет добавлена позднее.
# "Пустой" ввод тоже обрабатывается здесь.
# Измените этот сценарий таким образом, чтобы он не завершал работу
#+ после вывода информации о персоне, а переходил на ожидание нового
#+ ввода от пользователя.
Очень хороший пример использования case для анализа аргументов, переданных из командной строки.
"") echo "Порядок использования: ${0##*/} "; exit 65;; # Параметры командной строки отсутствуют,
# или первый параметр -- "пустой".
# Обратите внимание на ${0##*/} это подстановка параметра ${var##pattern}. В результате получается $0.
-*) FILENAME=./$1;; # Если имя файла (аргумент $1) начинается с "-",
# то заменить его на ./$1
# тогда параметр не будет восприниматься как ключ команды.
* ) FILENAME=$1;; # В противном случае -- $1.
Пример 10-26. Оператор case допускает использовать подстановку команд вместо анализируемой переменной
# Подстановка команд в "case".
case $( arch ) in # команда "arch" возвращает строку, описывающую аппаратную апхитектуру.
i386 ) echo "Машина на базе процессора 80386";;
i486 ) echo "Машина на базе процессора 80486";;
i586 ) echo "Машина на базе процессора Pentium";;
i686 ) echo "Машина на базе процессора Pentium2 или выше";;