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

Если пользователь выполняет некорректный ввод, раздается звуковой сигнал и отображается предостерегающее сообщение. Хотя в начале этой главы упоминалось о том, что будут применяться операторы echo Linux BSD, для генерации звукового сигнала будет применена команда из версии System V:

echo '"\007 the bell rang"

Конструкции echo и read применяются для задержки отображения экрана до тех пор, пока пользователь не нажмет клавишу [Enter]. При этом могут просматриваться любые сообщения или вывод команд.

В конце концов, потребуется очистить экран. Эта задача выполняется с помощью команды tput (о применении этой команды мы поговорим позже) в том случае, когда не используется clear. А теперь посмотрите на сам сценарий.

$ pg menu

#!/bin/sh # меню

# установка даты, имени пользователя и хоста

MYDATE=`date +%d/%m/%Y`

THIS_HOST= `hostname -s` USER=`whoami`

# бесконечный цикл!

while :

do

# очистка экрана с помощью команды tput

# здесь начинается конструкция "документ здесь"

cat <

# завершение конструкции "документ здесь"

echo -e -n "\tYour Choice [1,2,3,H, Q] >"

read CHOICE

case $CHOICE in

1) ls

;;

2) vi

;;

3) who

;;

H|h)

# использование конструкции "документ здесь" для экрана помощи

cat <

This "ls the help screen, nothing here yet to help you!

MAYDAY

;;

Q|q) exit 0

*) echo -e "\t\Q07unknown user response"

;;

esac

echo -e -n "\tHit the return key to continue"

read DUMMY

done

18.10. Заключение

Ядро любого более или менее сложного сценария образуют различные управляющие конструкции. Если вы ожидаете от сценария определенного "интеллекта", он должен быть способным принимать решения.

В этой главе было изучено, каким образом управляющие конструкции обеспечивают компромисс между хорошими и надежными сценариями. Здесь также изучается обработка списков и рассматривается работа с циклами, условиями для которых являются значения "истина" или "ложь".

ГЛАВА 19

Функции интерпретатора shell

До сих пор весь программный код сценариев данной книги выполнялся последовательно от начала до конца программы. Подобный подход неплох, но при этом некоторые фрагменты кода, рассмотренного в наших примерах, дублируются в пределах одного сценария.

Интерпретатор команд shell позволяет группировать наборы Команд или конструкций, создавая повторно используемые блоки. Подобные блоки называются shell–функциями.

В данной главе будут рассмотрены следующие темы:

   • определение функций;

   • работа с функциями в сценарии;

   • использование функций, определенных в файле функций;

   • примеры функций.

Функция состоит из двух частей:

Метка функции

Тело функции

В качестве метки выступает имя функции; тело функции образует набор команд. составляющих саму функцию. Имя функции должно быть уникальным: если это не так, результаты будут плачевны. Это связано с тем, что в случае наличия двух различных функций с одинаковыми именами сценарий просто не сможет вызвать нужную функцию.

Формат, применяемый для определения функций:

имя_функции ( )

{

Команда1}

или

имя_функции () {

команда 1 \

}

Приемлемы оба способа определения функции. Можно также использовать ключевое слово function перед именем функции имя функции.

function имя_функции ()

{

….

}

Функцию можно представлять себе как некоторый вид сценария, находящегося внутри другого сценария, но в этом случае следует учитывать одну особенность. При вызове функции она остается в текущем интерпретаторе shell, а ее копия хранится в памяти. С другой стороны, если вызывается или выполняется сценарий из другого сценария, создается отдельный интерпретатор shell. В таком случае становятся недействительными все существующие переменные, определенные в предыдущем сценарии.

Функции могут быть размещены в том же самом файле, что и сценарии, либо в отдельном файле, содержащем функции. При этом функции не всегда включают множество конструкций или команд; может просто содержаться единственная конструкция echo, которая выполняется при вызове функции.

19.1. Объявление функций в сценарии

Вот пример простой функции:

hello ()

{

echo "Hello there today's date is `date`"

}

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

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

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

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

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

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

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

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

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