Я пишу сценарій для автоматизації створення файлів конфігурації для Apache та PHP для власного веб-сервера. Я не хочу використовувати такі графічні інтерфейси, як CPanel або ISPConfig.
У мене є деякі шаблони файлів конфігурації Apache та PHP. Сценарій Bash повинен читати шаблони, робити змінну підстановку та виводити розбір шаблонів у якусь папку. Який найкращий спосіб зробити це? Я можу придумати кілька способів. Який із них найкращий, а може бути, є кілька кращих способів зробити це? Я хочу це зробити в чистому 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"
BTW, як я перенаправляю висновок на зовнішній файл тут? Чи потрібно щось уникати, якщо змінні містять, скажімо, лапки?
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/"
Мені здається погано через те, що потрібно уникати багатьох різних символів, і з багатьма змінними лінія буде занадто довгою.
Чи можете ви придумати якесь інше елегантне та безпечне рішення?