19.12. Загрузка файлов, которые состоят не только из функций

19.12. Загрузка файлов, которые состоят не только из функций

Загружаемый файл не обязательно должен содержать только функции; он может включать глобальные переменные, образующие файл конфигурации.

Предположим, что существует пара сценариев резервирования, которые архивируют различные части системы. Неплохой идеей в этом случае является разделение единого файла конфигурации. Все, что нужно для этого, -cоздать переменные внутри файла. Затем, когда начинает выполняться один из сценариев резервирования, можно загрузить эти переменные, если потребуется изменить любые настройки, заданные по умолчанию, перед началом выполнения сценария резервирования. Это может быть связано с тем, что пользователь захочет выполнять архивирование на различных носителях.

Подобный подход может применяться сценариями, разделяющими общие параметры конфигурации, с целью выполнения процесса. Ниже приведен пример. В следующем файле конфигурации содержатся переменные среды, заданные по умолчанию. Эти переменные используются несколькими сценариями резервирования. Вот содержимое этого файла:

$ pg backfunc

#!/bin/sh

   • name: backfunc

   • конфигурационный файл содержит настройки по умолчанию для систем архивации _CODE="comet"

_FULLBACKUP="yes" _LOGF1LE="/logs/backup/" _DEVICE="/dev/rmt/0n" _INFORM="yes" _PRINT_STATS="yes"

Комментарии разъясняют суть программы. Первое поле, _code, содержит кодовое слово. Для просмотра его содержимого и изменения значений пользователь должен ввести код, соответствующий значению code. В данном случае указывается слово "comet".

Ниже приведен сценарий, который в ответ на ввод пароля отображает конфигурацию, заданную по умолчанию:

$ pg readfunc

#!/bin/sh

# readfunc

if [ -r backfunc ]; then

# указание файла с параметрами

. /backfunc else

echo "`basename $0` cannot locate backfunc file" fi

echo -n "Enter the code name :"

# соответствует ли указанный код коду из файла backfunc?

if [ "${CODE}" != "${_CODE}" ]; then

echo "Wrong code…exiting..will use defaults" exit 1 fi

echo ." The environment config file reports"

echo "Full Backup Required : $_FULLBACKUP"

echo "The Logfile is : $_LOGFILE"

echo "The Device To Backup To is : $_DEVICE" echo "You Are To Be Informed by Mail : $_INFORM" echo "A Statistic Report To Be Printed: $_PRINT_STATS"

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

$ readfunc

Enter the code name :comet

The environment config file reports

Full Backup Required : yes

The Logfile ls : /logs/backup/

The Device To Backup To ls : /dev/rmt/0n You Are To Be Informed by Mail : yes A Statistic Report To Be Printed: yes