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

echo "Usage: `basename $0` arg1 arg2 arg3" >&2

exit 1

fi

# хорошо, получено 3 параметра, отображаются на экране

echo "arg1: $1"

echo "arg2: $2"

echo "arg3: $3"

Если передается только два параметра, на экран выводится соответствующее сообщение, и сценарий прекращает выполняться:

$ ifparam cup medal

Usage:ifparam argl arg2 arg3

При передаче трех параметров происходит следующее:

$ ifparam cup medal trophy

argl: cup arg2: medal arg3: trophy

<p><emphasis><strong>18.3.9. Определение интерактивного режима выполнения сценария</strong></emphasis></p>

Иногда требуется выяснить, выполняется сценарий в интерактивном режиме (режим терминала( либо не в интерактивном режиме (команды cron или at). Такая информация необходима для того, чтобы сценарий мог определить, где можно получить вводимые данные и куда направлять выводимые данные. Чтобы уточнить режим выполнения сценария, достаточно воспользоваться командой test с опцией -t. Если возвращается значение "истина", сценарий выполняется в интерактивном режиме.

$ pg ifinteractive

#! /bin/sh

# ifinteractive

if [ -t ]; then

echo "We are interactive with a terminal"

else

echo "We must be running from some background process probably cron or at " fi

<p><emphasis><strong>18.3.10. Простые операторы if else</strong></emphasis></p>

Следующая форма оператора if применяется чаще всего:

if условие

then команды1

else

команды2

fi

Если условие не удовлетворяет тестированию, часть else оператора if позволяет перейти к соответствующей операции.

<p><emphasis><strong>18.3.11. Проверка установок переменных</strong></emphasis></p>

Ниже проверяется установка переменной среды editor. Если переменной EDITOR не присвоено значение, пользователь информируется о том, что переменная editor не установлена. Если переменная editor установлена, тип редактора отображается на экране:

$ рg ifeditor

#!/bin/sh

# ifeditor

if [ -z $EDITOR ]; then

#переменная не установлена

echo "Your EDITOR environment is not set"

else

#посмотрим, что же это

echo "Using $EDITOR as the default editor"

<p><emphasis><strong>18.3.12. Проверка пользователя, выполняющего сценарий</strong></emphasis></p>

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

Если значение переменной не равно строке "root", на экран выводится сообщение из стандартного потока ошибок. Пользователь информируется о том, что он не является пользователем root, а сценарий завершается со значением ошибки, равным 1.

Если строка "root" равна значению переменной LOGNAME, выполняется оператор, который находится после else.

На практике в этом случае сценарий продолжает обработку задания в обычном режиме. Соответствующие операторы находятся после конструкции fi, поскольку все пользователи, отличные от пользователя root, лишаются доступа к сценарию еще на первом этапе проверки.

$ pg ifroot

#!/bin/sh

# ifroot

if [ "$LOGNAME" != "root" ]

# если пользователь не является пользователем root

echo "You need to be root to run this script" >&2

exit 1

else

# да, это пользователь root

echo "Yes indeed you are $LOGNAME proceed"

fi

# выполнение операторов в обычном режиме

<p><emphasis><strong>18.3.13. Передача параметров сценария системной команде</strong></emphasis></p>

Позиционные параметры можно передать сценарию, а затем проверить значение переменной. Если при этом пользователь указывает после названия сценария наименование каталога, сценарий заново присваивает специальному параметру $1 более содержательное название, в данном случае directory. С помощью команды ls -A проверяется, не является ли каталог пустым. Если каталог пуст, эта команда не возвращает данные. Затем отображается соответствующее сообщение.

$ pg ifdirec

#!/bin/sh

#ifdirec

#присваивание $1 переменной DIRECTORY DIRECTORY=$1

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

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

112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)
112 страниц про Париж. Опыт создания путеводителя (в помощь самостоятельным туристам)

  По Парижу приятно гулять, бесцельно бродить, кружить по узким улочкам, отдыхать в маленьких кафе и в парках у фонтанов. Здесь есть все для любителей архитектуры, ценителей живописи, театралов, меломанов, гурманов, поклонников всевозможных развлечений. Париж притягивает, удивляет, очаровывает, постепенно приоткрывая тайны любознательному гостю, который теряется от сложности выбора: что же увидеть прямо сейчас, а что отложить на потом. Мои 112 страниц про Париж, надеюсь, помогут сделать этот выбор. Предложенные 7 прогулок по городу включают в себя не только известные всему миру достопримечательности, но и множество других, которые часто остаются за пределами стандартных туристических маршрутов.  

Елена Р Стамбулян , Елена Р. Стамбулян

Руководства / Путеводители / Словари и Энциклопедии
40+. Уход за телом
40+. Уход за телом

Женщина после 40 лет – настоящая богиня, умудренная опытом и оттого еще более прекрасная. Но чтобы надолго сохранить красоту и молодость, нужно постоянно собой заниматься: ухаживать за своим телом, руками и ногами, выполнять физические упражнения и соблюдать диету. Благодаря этой книге вы научитесь самостоятельно готовить омолаживающие, питательные, увлажняющие кремы и маски, а также скрабы и пилинги из натуральных продуктов; выполнять легкие и эффективные упражнения для стройной фигуры и профилактики варикозного расширения вен, делать массаж рук и ног, навсегда избавитесь от целлюлита и сможете легко ориентироваться в выборе омолаживающих процедур в СПА-салонах и хирургических операций в клиниках красоты. Правила здорового питания, популярные диеты и рецепты полезных блюд – в этой книге есть все, что поможет 40-летним женщинам всегда быть в форме.

Анастасия Витальевна Колпакова

Здоровье / Руководства / Здоровье и красота / Дом и досуг / Словари и Энциклопедии