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