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



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


fi }

a=5 b=4 condition="$a -lt $b" # Сообщение об ощибке и завершение сценария. # Попробуйте поменять условие "condition" #+ на что нибудь другое и #+ посмотреть -- что получится.

assert "$condition" $LINENO # Сценарий продолжит работу только в том случае, если утверждение истинно.

# Прочие команды. # ... echo "Эта строка появится на экране только если утверждение истинно." # ... # Прочие команды. # ...

exit 0

Ловушка на выхто в этом сценарии может быть неправильно (подсказка: после ключевого словоде.

Команда exit, в сценарии, порождает сигнал 0, по которому процесс завершает работу, т.е. -- сам сценарий. [60] Часто бывает полезным по выходу из сценария выдать "распечатку" переменных.

Установка ловушек на сигналы

trap

Определяет действие при получении сигнала; так же полезна при отладке.

Сигнал (signal) -- это просто сообщение, передается процессу либо ядром, либо другим процессом, чтобы побудить процесс выполнить какие либо действия (обычно -- завершить работу). Например, нажатие на Control-C, вызывает передачу сигнала SIGINT, исполняющейся программе.

trap '' 2 # Игнорировать прерывание 2 (Control-C), действие по сигналу не указано.

trap 'echo "Control-C disabled."' 2 # Сообщение при нажатии на Control-C.

Пример 29-5. Ловушка на выходе

#!/bin/bash

trap 'echo Список переменных --- a = $a b = $b' EXIT # EXIT -- это название сигнала, генерируемого при выходе из сценария.

a=39

b=36

exit 0 # Примечательно, что если закомментировать команду 'exit', # то это никак не скажется на работе сценария, # поскольку "выход" из сценария происходит в любом случае.

Пример 29-6. Удаление временного файла при нажатии на Control-C

#!/bin/bash # logon.sh: Сценарий, написаный "на скорую руку", контролирует вход в режим on-line.

TRUE=1 LOGFILE=/var/log/messages # Обратите внимание: $LOGFILE должен быть доступен на чтение (chmod 644 /var/log/messages). TEMPFILE=temp.$$ # "Уникальное" имя для временного файла, где расширение в имени -- это pid процесса-сценария.


Содержание  Назад  Вперед