Страница 71 из 114
}
while : do
echo -n "What ls your first name :"
read F_NAME
if char_name $F_NAME
then
# все OK, завершение выполнения break else
name_error $F_NAME fi done
while : do
echo -n "What ls your surname :"
read S_NAME
if char_narae $S_NAME
then
# все OK, завершение выполнения
break else
name_error $S_NAME
fi
done
Обратите внимание на то, что для обработки результатов ввода применяется цикл while. Благодаря этому на экране отображается запрос до тех пор, пока пользователь не укажет верное значение. После ввода нужного значения выполнение цикла прерывается. Конечно, при реализации работающего сценария пользователю предоставляется возможность прервать выполнение цикла. При этом также применяется соответствующее управление курсором, например при проверке наличия полей с нулевой длиной.
Ниже приведены результаты выполнения описанного сценария:
$ func2
What ls your first name: Davi2d
Davi2d contains errors, it must contain only letters
What ls your first name: David
What ls your surname: Tansley1
Tansley1 contains errors, it must contain only letters
What ls your surname: Tansley
Проблемы с конструкцией echo
В системах Linux, BSD или System V конструкция echo по–разному интерпретирует служебные символы. Создадим функцию, определяющую систему, в которой используется конструкция echo.
После того как была применена конструкция echo, командная строка может и далее отображаться на экране, ожидая ввода данных со стороны команды read.
Для реализации описанного поведения в системах Linux и BSD совместно с командой echo применяется опция -n. Ниже приводится пример конструкции echo LINUX (BSD), когда командная строка продолжает отображаться на экране до момента завершения сценария:
$ echo -n "Your паше :"
Your name : {{?}}
В System V в этом случае применяется параметр с:
$ echo "Your name :c"
Your name : []
Для отображения на экране управляющих символов в Linux также потребуется указывать опцию -e в начале оператора echo. В других системах достаточно просто воспользоваться обратной косой чертой, в результате чего интерпретатор shell будет "уведомлен" о наличии управляющего символа.
Существует два метода проверки типа используемой конструкции echo. Мы рассмотрим оба этих метода, и вы сможете выбрать один из них для дальнейшего применения.
При использовании первого метода проверка управляющего символа происходит внутри конструкции echo. Если после ввода команды echo 07 прозвучал звуковой сигнал, значит, перед нами System V. Если отображается строка "