18.4.6. Значения переменных, заданные по умолчанию
18.4.6. Значения переменных, заданные по умолчанию
Если при просмотре значения переменной пользователь нажимает клавишу [Return], сценарий завершает работу не всегда. С помощью проверки определяется, установлена ли данная переменная, и если не установлена, то ей может быть присвоено значение.
В следующем сценарии для выполнения отчета пользователю предлагают ввести название дня недели. Если пользователь нажимает клавишу [Return], используется день недели, заданный по умолчанию, а именно "Saturday". Это название и присваивается переменной when.
Если пользователь вводит название другого дня, с помощью оператора case выполняется проверка, совпадает ли введенное название с названием одного из дней недели, предназначенных для выполнения сценария, а именно "Saturday", "Sunday"
и "Monday". Обратите внимание, что всевозможные аббревиатуры названий дней недели составлены так, чтобы выполнялся перехват "всех возможных" комбинаций этих названий.
Ниже приводится соответствующий сценарий.
$ pg caserep
#!/bin/sh
# caserep
echo " Weekly Report"
echo -n "What day do you want to run report [Saturday] :"
#если нажать клавишу ввода, принимается заданное по умолчанию название Saturday
read WHEN
echo "validating..
${WHEN:="Saturday"}"
case $WHEN in Monday|MONDAY|mon);;
Sunday|SUNDAY|sun);;
Saturday|SATURDAY}sat);;
*) echo " Are you nuts!, this report can only be run on " >&2
echo " on a Saturday, Sunday or Monday" >&2
exit 1
esac
echo "Report to run on $WHEN"
# здесь команда для выполнения действительного отчета
При корректных начальных данных получим:
$ caserep
Weekly Report What day do you want to run report [Saturday] : validating..Saturday Report to run on Saturday
Если начальные данные были неправильны, получим:
$ caserep
Weekly Report What day do you want to run report [Saturday] :Tuesday validating..Tuesday
Are you nuts! this report can only be run on a Saturday, Sunday or Monday
Можно заключить, что оператор case функционирует так же, как и несколько операторов if then else. Такой вывод вполне правомерен.