Читаем Linux и UNIX: программирование в shell. Руководство разработчика. полностью

then

# присутствуют ошибки

return 1

else

# содержит только символы

return 0

fi }

name_error()

# отображение сообщения об ошибке

{

echo " $@ contains errors, it must contain only letters"

}

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 \007 прозвучал звуковой сигнал, значит, перед нами System V. Если отображается строка "\007", значит, текущей операционной системой является Linux.

Вот первая функция, выполняющая проверку на наличие управляющих символов.

uni_prompt ()

   • uni_prompt

   • универсальная конструкция echo

{

if [ `echo "\007"` ="\007" ] >/dev/null 2>&1

# слышен звуковой сигнал либо отображаются символы?

then

# отображаются символы, это LINUX/BSD

echo -e -n "$@"

else

# это System V

echo "$@\c"

fi }

И снова обратите внимание на применение специальной переменной $@ для отображения строки. Для вызова функции в сценарии можно использовать следующую команду:

uni_prompt "\007There goes the bell. What is your name :"

В результате выполнения этой команды выдается звуковой сигнал и отображается строка "What is your name", которая остается на экране.

Для проверки на наличие новой строки можно отобразить любой символ, используя версию команды echo \c системы System V. Если символ "зависает" в конце строки, мы имеем дело с System V; если же нет, значит у нас система Linux/BSD.

Второй метод заключается в проверке того, будет ли литера Z "зависать" в конце строки. При этом используется опция \с системы System V.

uni_prompt ()

#uni_prompt

#универсальная командная строка

{

Перейти на страницу:

Похожие книги

Библия БДСМ. Полное руководство
Библия БДСМ. Полное руководство

Первое исчерпывающее пособие по БДСМ. Уникальный иллюстрированный гид для тех, кому просто любопытно, и для тех, кто уже в Теме. В этой книге известные педагоги и профессионалы ответили на все важные вопросы и раскрыли все интересующие вас темы: основные принципы, ролевые игры, господство, подчинение, фистинг, садизм, мазохизм, связывание, физическое воздействие, тантра необычного секса и многое другое. Если вы хоть раз задумывались о БДСМ, значит, эта книга то, что вам нужно. Она способна обучить, вдохновить и бросить вызов даже опытным игрокам. Не бойтесь экспериментировать, и добро пожаловать в мир сексуальных приключений!

Тристан Таормино , Литагент «5 редакция»

Зарубежная образовательная литература, зарубежная прикладная, научно-популярная литература / Руководства / Дом и досуг / Образовательная литература / Словари и Энциклопедии
Путь менеджера от новичка до гуру
Путь менеджера от новичка до гуру

«Путь менеджера» – это сборник лучших материалов online-сообщества (learning community) менеджеров E-xecutive за пять лет (2001–2005), которые впервые публикуются offline. Возможно, это книга с самым большим количеством авторов: 20 сотрудников E-xecutive и более 200 участников Сообщества писали, выбирали и редактировали материалы.Книга представляет собой «карту местности» для менеджера, стремящегося найти кратчайший путь к успеху, на которой отображены открытия лучших «картографов» – всемирно признанных бизнес-гуру и успешных российских топ-менеджеров. Эта книга о том, чем в действительности живут менеджеры, о чем не пишут в учебниках, и предназначается она для тех, кто стремится не только к карьерному успеху, но и к настоящей эффективности, личностному и профессиональному развитию.

Сообщество менеджеров E-xecutive

Руководства / Словари и Энциклопедии