J'écris un script pour automatiser la création de fichiers de configuration pour Apache et PHP pour mon propre serveur Web. Je ne veux pas utiliser d'interface graphique comme CPanel ou ISPConfig.
J'ai quelques modèles de fichiers de configuration Apache et PHP. Le script Bash doit lire les modèles, effectuer une substitution de variable et générer des modèles analysés dans un dossier. Quelle est la meilleure façon de le faire? Je peux penser à plusieurs façons. Laquelle est la meilleure ou peut-être existe-t-il de meilleures façons de le faire? Je veux faire ça en pure Bash (c'est facile en PHP par exemple)
1) Comment remplacer les espaces réservés $ {} dans un fichier texte?
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, comment rediriger la sortie vers un fichier externe ici? Dois-je échapper à quelque chose si les variables contiennent, par exemple, des guillemets?
2) Utilisation de cat & sed pour remplacer chaque variable par sa valeur:
Template.txt donné:
The number is ${i}
The word is ${word}
Commander:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Cela me semble mauvais à cause de la nécessité d'échapper à de nombreux symboles différents et avec de nombreuses variables, la ligne sera trop longue.
Pouvez-vous penser à une autre solution élégante et sûre?