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

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

Жанры

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

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

Шрифт:

Если parameter инициализирован, то используется его значение, в противном случае -- выводится err_msg.

Обе формы записи можно, до определенной степени, считать идентичными. Символ : имеет значение только когда parameter инициализирован "пустым" значением, см. ниже.

Пример 9-13. Подстановка параметров и сообщения об ошибках

#!/bin/bash

# Проверка отдельных переменных окружения.

#

Если переменная, к примеру $USER, не установлена,

#+ то выводится сообщение об ошибке.

: ${HOSTNAME?} ${USER?} ${HOME?} ${MAIL?}

echo

echo "Имя машины: $HOSTNAME."

echo "Ваше имя: $USER."

echo "Ваш домашний каталог: $HOME."

echo "Ваш почтовый ящик: $MAIL."

echo

echo "Если перед Вами появилось это сообщение,"

echo "то это значит, что все критические переменные окружения установлены."

echo

echo

# ------------------------------------------------------

# Конструкция ${variablename?} так же выполняет проверку

#+ наличия переменной в сценарии.

ThisVariable=Value-of-ThisVariable

# Обратите внимание, в строковые переменные могут быть записаны

#+ символы, которые запрещено использовать в именах переменных.

: ${ThisVariable?}

echo "Value of ThisVariable is $ThisVariable".

echo

echo

: ${ZZXy23AB?"Переменная ZZXy23AB не инициализирована."}

# Если ZZXy23AB не инициализирована,

#+ то сценарий завершается с сообщением об ошибке.

# Текст сообщения об ошибке можно задать свой.

# : ${ZZXy23AB?"Переменная ZZXy23AB не инициализирована."}

# То же самое: dummy_variable=${ZZXy23AB?}

# dummy_variable=${ZZXy23AB?"Переменная ZXy23AB не инициализирована."}

#

# echo ${ZZXy23AB?} >/dev/null

echo "Это сообщение не будет напечатано, поскольку сценарий завершится раньше."

HERE=0

exit $HERE #

Сценарий завершит работу не здесь.

Пример 9-14. Подстановка параметров и сообщение о "порядке использования"

#!/bin/bash

# usage-message.sh

: ${1?"Порядок использования: $0 ARGUMENT"}

# Сценарий завершит свою работу здесь, если входные аргументы отсутствуют,

#+ со следующим сообщением.

# usage-message.sh: 1: Порядок использования: usage-message.sh ARGUMENT

echo "Эти две строки появятся, только когда задан аргумент в командной строке."

echo "Входной аргумент командной строки = \"$1\""

exit 0 # Точка выхода находится здесь, только когда задан аргумент командной строки.

# Проверьте код возврата в обеих случаях, с и без аргумента командной строки.

# Если аргумент задан, то код возврата будет равен 0.

# Иначе -- 1.

Подстановка параметров и/или экспансия. Следующие выражения могут служить дополнениями оператора match команды expr, применяемой к строкам (см. Пример 12-6). Как правило, они используются при разборе имен файлов и каталогов.

Длина переменной / Удаление подстроки

${#var}

String length (число символов в переменной $var). В случае массивов, команда ${#array} возвращает длину первого элемента массива.

Исключения:

${#*} и ${#@} возвращает количество аргументов (позиционных параметров).

Для массивов, ${#array[*]} и ${#array[@]} возвращает количество элементов в массиве.

Пример 9-15. Длина переменной

#!/bin/bash

# length.sh

E_NO_ARGS=65

if [ $# -eq 0 ] # Для работы скрипта необходим хотя бы один входной параметр.

then

echo "Вызовите сценарий с одним или более параметром командной строки."

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

Долгий путь домой

Русич Антон
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
6.20
рейтинг книги
Долгий путь домой

Убивать чтобы жить 6

Бор Жорж
6. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 6

Возвышение Меркурия. Книга 3

Кронос Александр
3. Меркурий
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 3

Фиктивная жена

Шагаева Наталья
1. Братья Вертинские
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Фиктивная жена

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Барон Дубов 4

Карелин Сергей Витальевич
4. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 4

Лекарь для захватчика

Романова Елена
Фантастика:
попаданцы
историческое фэнтези
фэнтези
5.00
рейтинг книги
Лекарь для захватчика

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

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

Ваше Сиятельство 9

Моури Эрли
9. Ваше Сиятельство
Фантастика:
боевая фантастика
попаданцы
стимпанк
аниме
фэнтези
5.00
рейтинг книги
Ваше Сиятельство 9

Господин следователь

Шалашов Евгений Васильевич
1. Господин следователь
Детективы:
исторические детективы
5.00
рейтинг книги
Господин следователь

Академия проклятий. Книги 1 - 7

Звездная Елена
Академия Проклятий
Фантастика:
фэнтези
8.98
рейтинг книги
Академия проклятий. Книги 1 - 7

Полковник Гуров. Компиляция (сборник)

Макеев Алексей Викторович
Полковник Гуров
Детективы:
криминальные детективы
шпионские детективы
полицейские детективы
боевики
крутой детектив
5.00
рейтинг книги
Полковник Гуров. Компиляция (сборник)

Первый среди равных. Книга V

Бор Жорж
5. Первый среди Равных
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Первый среди равных. Книга V

Землянка для двух нагов

Софи Ирен
Фантастика:
космическая фантастика
5.00
рейтинг книги
Землянка для двух нагов