Я пишу скрипт для автоматизации создания файлов конфигурации для Apache и PHP для моего собственного веб-сервера.Я не хочу использовать какие-либо графические интерфейсы, такие как CPanel или ISPConfig.
У меня есть несколько шаблонов конфигурационных файлов Apache и PHP.Bash-скрипт должен читать шаблоны, производить подстановку переменных и выводить проанализированные шаблоны в какую-то папку.Каков наилучший способ сделать это?Я могу придумать несколько способов.Какой из них лучший или может быть есть лучшие способы сделать это?Я хочу сделать это в чистом Bash (это легко в PHP, например)
1) Как заменить $ {} заполнителей в текстовом файле?
шаблон.txt:
the number is ${i}
the word is ${word}
script.sh:
#!/bin/sh
#set variables
i=1
word="dog"
#read in template one line at the time, and replace variables
#(more natural (and efficient) way, thanks to Jonathan Leffler)
while read line
do
eval echo "$line"
done < "./template.txt"
Кстати, как мне перенаправить вывод во внешний файл?Нужно ли что-то экранировать, если переменные содержат, скажем, кавычки?
2) Использование cat & sed для замены каждой переменной ее значением:
Данный template.txt:
The number is ${i}
The word is ${word}
Команда:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Мне кажется плохим из-за необходимости экранировать много разных символов, и со многими переменными строка будет слишком длинной.
Можете ли вы вспомнить некоторыедругое элегантное и безопасное решение?