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


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


Пример 17-9. "Анонимный" Встроенный Документ

#!/bin/bash

: <<TESTVARIABLES ${HOSTNAME?}${USER?}${MAIL?} # Если одна из переменных не определена, то выводится сообщение об ошибке. TESTVARIABLES

exit 0

Подобную технику можно использовать для создания "блочных комментариев".

Пример 17-10. Блочный комментарий

#!/bin/bash # commentblock.sh

: << COMMENTBLOCK echo "Эта строка не будет выведена." Эта строка комментария не начинается с символа "#". Это еще одна строка комментария, которая начинается не с символа "#".

&*@!!++= Эта строка не вызовет ошибки, поскольку Bash проигнорирует ее. COMMENTBLOCK

echo "Код завершения \"COMMENTBLOCK\" = $?." # 0 # Показывает, что ошибок не возникало.

# Такая методика создания блочных комментариев #+ может использоваться для комментирования блоков кода во время отладки. # Это экономит силы и время, т.к. не нужно втавлять символ "#" в начале каждой строки, #+ а затем удалять их.

: << DEBUGXXX for file in * do cat "$file" done DEBUGXXX

exit 0

Еще одно остроумное применение встроенных документов -- встроенная справка к сценарию.

Пример 17-11. Встроенная справка к сценарию

#!/bin/bash # self-document.sh: сценарий со встроенной справкой # Модификация сценария "colm.sh".

DOC_REQUEST=70

if [ "$1" = "-h" -o "$1" = "--help" ] # Request help. then echo; echo "Порядок использования: $0 [directory-name]"; echo sed --silent -e '/DOCUMENTATIONXX$/,/^DOCUMENTATION/p' "$0" | sed -e '/DOCUMENTATIONXX/d'; exit $DOC_REQUEST; fi

: << DOCUMENTATIONXX Сценарий выводит сведения о заданном каталоге в виде таблице. ------------------------------------------------------------- Сценарию необходимо передать имя каталога. Если каталог не указан или он недоступен для чтения, то выводятся сведения о текущем каталоге.

DOCUMENTATIONXX

if [ -z "$1" -o ! -r "$1" ] then directory=.


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