Основы программирования в Linux
Основы программирования в Linux читать книгу онлайн
Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних чтение данного контента СТРОГО ЗАПРЕЩЕНО! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту [email protected] для удаления материала
Вы можете написать новую версию сценария проверки пользовательского ввода с помощью конструкции
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
*
Предыдущая версия конструкции 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*
*
В заключение, для того чтобы сделать сценарий многократно используемым, вам необходимо использовать другое значение кода завершения в том случае, когда применяется образец по умолчанию для непонятного варианта ввода.
#!/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