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


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


cat <<'Endofmessage'

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

Endofmessage

# Подстановка параметров не производится, если строка ограничитель # заключена в кавычки или экранирована. # Тот же эффект дают: # cat <<"Endofmessage" # cat <<\Endofmessage

exit 0

Еще один пример сценария, содержащего встроенный документ и подстановку параметров в его теле.

Пример 17-7. Передача пары файлов во входящий каталог на "Sunsite"

#!/bin/bash # upload.sh

# Передача пары файлов (Filename.lsm, Filename.tar.gz) # на Sunsite (ibiblio.org).

E_ARGERROR=65

if [ -z "$1" ] then echo "Порядок использования: `basename $0` filename" exit $E_ARGERROR fi

Filename=`basename $1` # Отсечь имя файла от пути к нему.

Server="ibiblio.org" Directory="/incoming/Linux" # Вообще, эти строки должны бы не "зашиваться" жестко в сценарий, # а приниматься в виде аргумента из командной строки.

Password="your.e-mail.address" # Измените на свой.

ftp -n $Server <<End-Of-Session # Ключ -n запрещает автоматическую регистрацию (auto-logon)

user anonymous "$Password" binary bell # "Звякнуть" после передачи каждого файла cd $Directory put "$Filename.lsm" put "$Filename.tar.gz" bye End-Of-Session

exit 0

Встроенные документы могут передаваться на вход функции, находящейся в том же сценарии.

Пример 17-8. Встроенные документы и функции

#!/bin/bash # here-function.sh

GetPersonalData () { read firstname read lastname read address read city read state read zipcode } # Это немного напоминает интерактивную функцию, но...

# Передать ввод в функцию. GetPersonalData <<RECORD001 Bozo Bozeman 2726 Nondescript Dr. Baltimore MD 21226 RECORD001

echo echo "$firstname $lastname" echo "$address" echo "$city, $state $zipcode" echo

exit 0

Встроенный документ можно передать "пустой команде" :. Такая конструкция, фактически, создает "анонимный" встроенный документ.




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