Основы программирования в Linux - Мэтью Нейл
Тут можно читать бесплатно Основы программирования в Linux - Мэтью Нейл. Жанр: Интернет издательство , год .
Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте knigi-for.me (knigi for me) или прочесть краткое содержание, предисловие (аннотацию),
описание и ознакомиться с отзывами (комментариями) о произведении.
Упражнение 2.6. Вариант 1: пользовательский ввод
Вы можете написать новую версию сценария проверки пользовательского ввода с помощью конструкции
case
#!/bin/sh
echo "Is it morning? Please answer yes or no "
read timeofday
case "$timeofday" in
yes) echo "Good Morning";;
no ) echo "Good Afternoon";;
y ) echo "Good Morning";;
n ) echo "Good Afternoon";;
* ) echo "Sorry, answer not recognized";;
esac
exit 0
Как это работает
Когда выполняется оператор
case
timeofday
case
)
Оператор
case
*
*
case
case
*
Упражнение 2.7. Вариант 3: объединение образцов
Предыдущая версия конструкции case, безусловно, элегантнее варианта с множественными операторами
if
#!/bin/sh
echo "Is it morning? Please answer yes or no "
read timeofday
<i>case "$timeofday" in</i>
<i> yes | y | Yes | YES ) echo "Good Morning";;</i>
<i> n* | N*) echo "Good Afternoon";;</i>
<i> * ) echo "Sorry, answer not recognized";;</i>
<i>esac</i>
exit 0
Как это работает
Данный сценарий в операторе
case
case
*
never
n*
*
Упражнение 2.8. Вариант 3: выполнение нескольких операторов
В заключение, для того чтобы сделать сценарий многократно используемым, вам необходимо использовать другое значение кода завершения в том случае, когда применяется образец по умолчанию для непонятного варианта ввода.
#!/bin/sh
echo "Is it -morning? Please answer yes or no"
read timeofday
<i>case "$timeofday" in</i>
<i> yes | y | Yes | YES )</i>
echo "Good Morning"
<i> echo "Up bright and early this morning"</i>
<i> ;;</i>
<i> [nN]*)</i>
<i> echo "Good Afternoon"</i>
<i> ;;</i>
<i> *)</i>
<i> echo "Sorry, answer not recognized"</i>
<i> echo "Please answer yes or no"</i>
<i> exit 1</i>
<i> ;;</i>
<i>esac</i>
exit 0
Как это работает
Для демонстрации другого способа определения соответствия образцу в этом программном коде изменен вариант определения соответствия для ветви
no
case
*)
Примечание
Учтите, что сдвоенная точка с запятой
;;
esac
;;
case