Estoy escribiendo un script para automatizar la creación de archivos de configuración para Apache y PHP para mi propio servidor web. No quiero usar ninguna GUI como CPanel o ISPConfig.
Tengo algunas plantillas de archivos de configuración de Apache y PHP. La secuencia de comandos Bash necesita leer plantillas, realizar sustituciones variables y generar plantillas analizadas en alguna carpeta. ¿Cuál es la mejor manera de hacer eso? Se me ocurren varias maneras. ¿Cuál es el mejor o puede haber algunas formas mejores de hacerlo? Quiero hacer eso en puro Bash (es fácil en PHP, por ejemplo)
1) ¿Cómo reemplazar los marcadores de posición $ {} en un archivo 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"
Por cierto, ¿cómo redirecciono la salida a un archivo externo aquí? ¿Necesito escapar de algo si las variables contienen, por ejemplo, comillas?
2) Usando cat & sed para reemplazar cada variable con su valor:
Dado template.txt:
The number is ${i}
The word is ${word}
Mando:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Me parece mal por la necesidad de escapar de muchos símbolos diferentes y con muchas variables la línea será demasiado larga.
¿Se te ocurre alguna otra solución elegante y segura?