Книга: Искусство программирования на языке сценариев командной оболочки
Пример 29-4. Проверка условия с помощью функции "assert"
Пример 29-4. Проверка условия с помощью функции "assert"
#!/bin/bash
# assert.sh
assert () # Если условие ложно,
{ #+ выход из сценария с сообщением об ошибке.
E_PARAM_ERR=98
E_ASSERT_FAILED=99
if [ -z "$2" ] # Недостаточное количество входных параметров.
then
return $E_PARAM_ERR
fi
lineno=$2
if [ ! $1 ]
then
echo "Утверждение ложно: "$1""
echo "Файл: "$0", строка: $lineno"
exit $E_ASSERT_FAILED
# else
# return
# и продолжить исполнение сценария.
fi
}
a=5
b=4
condition="$a -lt $b" # Сообщение об ощибке и завершение сценария.
# Попробуйте поменять условие "condition"
#+ на что нибудь другое и
#+ посмотреть -- что получится.
assert "$condition" $LINENO
# Сценарий продолжит работу только в том случае, если утверждение истинно.
# Прочие команды.
# ...
echo "Эта строка появится на экране только если утверждение истинно."
# ...
# Прочие команды.
# ...
exit 0
5. Ловушка на выхто в этом сценарии может быть неправильно (подсказка: после ключевого словоде.
Команда exit, в сценарии, порождает сигнал 0, по которому процесс завершает работу, т.е. -- сам сценарий[ 60 ]. Часто бывает полезным по выходу из сценария выдать "распечатку" переменных.
Установка ловушек на сигналы
trap
Определяет действие при получении сигнала; так же полезна при отладке.
trap '' 2
# Игнорировать прерывание 2 (Control-C), действие по сигналу не указано.
trap 'echo "Control-C disabled."' 2
# Сообщение при нажатии на Control-C.
- Пример установочного скрипта
- Пример из практики
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Повышение производительности приложений с помощью хранимых процедур
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- Основные "рычаги" управления производительностью
- Организация пользователей в группы с помощью ролей
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Аргументы функции в Python
- 3. Функции
- Примеры получения статистики
- Пример применения метода «пять почему»