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


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


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

cat <<-ENDOFMESSAGE Это первая строка сообщения. Это вторая строка сообщения. Это третья строка сообщения. Это четвертая строка сообщения. Это последняя строка сообщения. ENDOFMESSAGE # Текст, выводимый сценарием, будет смещен влево. # Ведущие символы табуляции не будут выводиться.

# Вышеприведенные 5 строк текста "сообщения" начинаются с табуляции, а не с пробелов.

exit 0

Встроенные документы поддерживают подстановку команд и параметров. Что позволяет передавать различные параметры в тело встроенного документа.

Пример 17-5. Встроенные документы и подстановка параметров

#!/bin/bash # Вывод встроенного документа командой 'cat', с использованием подстановки параметров.

# Попробуйте запустить сценарий без аргументов, ./scriptname # Попробуйте запустить сценарий с одним аргументом, ./scriptname Mortimer # Попробуйте запустить сценарий с одним аргументом, из двух слов, в кавычках, # ./scriptname "Mortimer Jones"

CMDLINEPARAM=1 # Минимальное число аргументов командной строки.

if [ $# -ge $CMDLINEPARAM ] then NAME=$1 # Если аргументов больше одного, # то рассматривается только первый. else NAME="John Doe" # По-умолчанию, если сценарий запущен без аргументов. fi

RESPONDENT="автора этого сценария"

cat <<Endofmessage

Привет, $NAME! Примите поздравления от $RESPONDENT.

# Этот комментарий тоже выводится (почему?).

Endofmessage

# Обратите внимание на то, что пустые строки тоже выводятся.

exit 0

Заключая строку-ограничитель в кавычки или экранируя ее, можно запретить подстановку параметров в теле встроенного документа.

Пример 17-6. Отключение подстановки параметров

#!/bin/bash # Вывод встроенного документа командой 'cat', с запретом подстановки параметров.

NAME="John Doe" RESPONDENT="автора этого сценария"




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