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

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

Пример 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=.

else

directory="$1"

fi

echo "Сведения о каталоге "$directory":"; echo

(printf "PERMISSIONS LINKS OWNER GROUP SIZE MONTH DAY HH:MM PROG-NAMEn"

; ls -l "$directory" | sed 1d) | column -t

exit 0


Для встроенных документов, во время исполнения, создаются временные файлы, но эти файлы удаляются после открытия и недоступны для других процессов.

bash$ bash -c 'lsof -a -p $$ -d0' << EOF

> EOF

lsof 1213 bozo 0r REG 3,5 0 30386 /tmp/t1213-0-sh (deleted)


Некоторые утилиты не могут работать внутри встроенных документов.

Если какая либо задача не может быть решена с помощью "встроенного документа", то вам следует попробовать язык сценариев expect, который приспособлен для передачи параметров на вход интерактивных программ.

Оглавление книги


Генерация: 1.960. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз