Estou escrevendo um script para automatizar a criação de arquivos de configuração para Apache e PHP para meu próprio servidor web. Não quero usar GUIs como CPanel ou ISPConfig.
Eu tenho alguns modelos de arquivos de configuração Apache e PHP. O script Bash precisa ler modelos, fazer substituição de variáveis e gerar modelos analisados em alguma pasta. Qual o melhor jeito pra fazer isso? Eu posso pensar em várias maneiras. Qual é o melhor ou pode haver algumas maneiras melhores de fazer isso? Eu quero fazer isso no Bash puro (é fácil no PHP, por exemplo)
1) Como substituir espaços reservados $ {} em um arquivo de texto?
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, como redireciono a saída para um arquivo externo aqui? Preciso escapar de algo se as variáveis contiverem, digamos, aspas?
2) Usando cat & sed para substituir cada variável pelo seu valor:
Dado template.txt:
The number is ${i}
The word is ${word}
Comando:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Parece ruim para mim devido à necessidade de escapar de muitos símbolos diferentes e com muitas variáveis a linha será muito longa.
Você consegue pensar em outra solução elegante e segura?