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


Программирование на языке сценариев командной оболочки - стр. 27


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




Начало  Назад  Вперед



Книжный магазин