Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

echo

echo "Имя файла сценария: \"$0\"."

# Для текущего каталога добавит ./

echo "Имя файла сценария: \"`basename $0`\"."

# Добавит путь к имени файла (см. 'basename')

echo

if [ -n "$1" ] # Проверяемая переменная заключена в кавычки.

then

echo "Параметр #1: $1" #

необходимы кавычки для экранирования символа #

fi

if [ -n "$2" ]

then

echo "Параметр #2: $2"

fi

if [ -n "$3" ]

then

echo "Параметр #3: $3"

fi

# ...

if [ -n "${10}" ] # Параметры, следующие за $9 должны заключаться в фигурные скобки

then

echo "Параметр #10: ${10}"

fi

echo "-----------------------------------"

echo "Все аргументы командной строки: "$*""

if [ $# -lt "$MINPARAMS" ]

then

echo

echo "Количество аргументов командной строки должно быть не менее $MINPARAMS !"

fi

echo

exit 0

Скобочная нотация позиционных параметров дает довольно простой способ обращения к последнему аргументу, переданному в сценарий из командной строки. Такой способ подразумевает использование косвенной адресации.

args=$# # Количество переданных аргументов.

lastarg=${!args} # Обратите внимание: lastarg=${!$#} неприменимо.

В сценарии можно предусмотреть различные варианты развития событий, в зависимости от имени сценария. Для этого сценарий должен проанализировать аргумент $0– - имя файла сценария. Это могут быть и имена символических ссылок на файл сценария.

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

variable1_=$1_

# Это предотвратит появление ошибок, даже при отсутствии входного аргумента.

critical_argument01=$variable1_

# Дополнительные символы всегда можно "убрать" позднее.

# Это может быть сделано примерно так:

variable1=${variable1_/_/} # Побочный эффект возникает только если имя переменной

# $variable1_ будет начинаться с символа "_".

# Здесь используется один из вариантов подстановки параметров, обсуждаемых в Главе 9.

# Отсутствие шаблона замены приводит к удалению.

# Более простой способ заключается

#+ в обычной проверке наличия позиционного параметра.

if [ -z $1 ]

then

exit $POS_PARAMS_MISSING

fi

– --

Пример 4-6. wh, whois выяснение имени домена

#!/bin/bash

# Команда 'whois domain-name' выясняет имя домена на одном из 3 серверов:

# ripe.net, cw.net, radb.net

# Разместите этот скрипт под именем 'wh' в каталоге /usr/local/bin

# Требуемые символические ссылки:

# ln -s /usr/local/bin/wh /usr/local/bin/wh-ripe

# ln -s /usr/local/bin/wh /usr/local/bin/wh-cw

# ln -s /usr/local/bin/wh /usr/local/bin/wh-radb

if [ -z "$1" ]

then

echo "Порядок использования: `basename $0` [domain-name]"

exit 65

fi

case `basename $0` in

# Проверка имени скрипта и, соответственно, имени сервера

"wh" ) whois [email protected];;

"wh-ripe") whois [email protected];;

"wh-radb") whois [email protected];;

"wh-cw" ) whois [email protected];;

* ) echo "Порядок использования: `basename $0` [domain-name]";;

esac

exit 0

Поделиться:
Популярные книги

Отморозок 3

Поповский Андрей Владимирович
3. Отморозок
Фантастика:
попаданцы
5.00
рейтинг книги
Отморозок 3

Род Корневых будет жить!

Кун Антон
1. Тайны рода
Фантастика:
фэнтези
попаданцы
аниме
7.00
рейтинг книги
Род Корневых будет жить!

На границе империй. Том 7. Часть 2

INDIGO
8. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
6.13
рейтинг книги
На границе империй. Том 7. Часть 2

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Идеальный мир для Лекаря 11

Сапфир Олег
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11

Последняя Арена 2

Греков Сергей
2. Последняя Арена
Фантастика:
рпг
постапокалипсис
6.00
рейтинг книги
Последняя Арена 2

Скрываясь в тени

Мазуров Дмитрий
2. Теневой путь
Фантастика:
боевая фантастика
7.84
рейтинг книги
Скрываясь в тени

Герцог и я

Куин Джулия
1. Бриджертоны
Любовные романы:
исторические любовные романы
8.92
рейтинг книги
Герцог и я

Владеющий

Злобин Михаил
2. Пророк Дьявола
Фантастика:
фэнтези
8.50
рейтинг книги
Владеющий

Развод с миллиардером

Вильде Арина
1. Золушка и миллиардер
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Развод с миллиардером

Паладин из прошлого тысячелетия

Еслер Андрей
1. Соприкосновение миров
Фантастика:
боевая фантастика
попаданцы
6.25
рейтинг книги
Паладин из прошлого тысячелетия

Боги, пиво и дурак. Том 6

Горина Юлия Николаевна
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6

Бестужев. Служба Государевой Безопасности. Книга вторая

Измайлов Сергей
2. Граф Бестужев
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга вторая

Орден Багровой бури. Книга 6

Ермоленков Алексей
6. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 6