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


Программирование на языке сценариев командной оболочки - стр. 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 процесса-сценария.


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