Часто для целей серверной автоматизации требуется генерация конфигурационных файлов.
Предлагается использовать для этих целей следующую shell-конструкцию
*BSD:
#!/bin/sh
config_file='test.conf'
template_file='mytemplate'
myvar1='variable 1'
template=`cat ${template_file}`
eval "echo \"${template}\"" > ${config_file}
Linux:
#!/bin/bash
config_file='test.conf'
template_file='mytemplate'
myvar1='variable 1'
template=`cat ${template_file}`
eval "echo \"${template}\"" > ${config_file}
Переменная template_file содержит путь к шаблону, остальные переменные - данные для шаблона.
Последная строчка - ничто иное, как "движок" шаблонизатора, eval-вычисление строки-шаблона.
Пример шаблона:
myvar = ${myvar1}
this is a \" quotes test \"
$(
if [ ! -z ${myvar2} ]; then
echo "myvar2 is set and its value = ${myvar2}"
fi
)
Важно отметить, что в шаблоне следует экранировать кавычки.
В шаблоне можно использовать не только подстановки значений, но и управляющие конструкции,
заключенные в скобки (см. пример шаблона).
|