Я пишу script для автоматизации создания файлов конфигурации для Apache и PHP для своего собственного веб-сервера. Я не хочу использовать графические интерфейсы, такие как CPanel или ISPConfig.
У меня есть несколько шаблонов файлов конфигурации Apache и PHP. Bash script необходимо прочитать шаблоны, сделать замену переменных и выводить анализируемые шаблоны в какую-то папку. Каков наилучший способ сделать это? Я могу думать о нескольких путях. Какой из них лучший, или, может быть, есть некоторые способы сделать это? Я хочу сделать это в чистом Bash (например, это просто в PHP)
1) Как заменить ${} заполнители в текстовом файле?
template.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/"
Мне кажется плохой из-за необходимости избегать множества разных символов и со многими переменными, длина линии будет длиннее.
Можете ли вы подумать о другом элегантном и безопасном решении?