Ich schreibe ein Skript, um das Erstellen von Konfigurationsdateien für Apache und PHP für meinen eigenen Webserver zu automatisieren. Ich möchte keine GUIs wie CPanel oder ISPConfig verwenden.
Ich habe einige Vorlagen für Apache- und PHP-Konfigurationsdateien. Das Bash-Skript muss Vorlagen lesen, Variablen ersetzen und analysierte Vorlagen in einem Ordner ausgeben. Was ist der beste Weg das zu tun? Ich kann mir verschiedene Möglichkeiten vorstellen. Welches ist das beste oder gibt es vielleicht bessere Möglichkeiten, das zu tun? Ich möchte das in reinem Bash machen (es ist zum Beispiel in PHP einfach)
1) Wie ersetze ich $ {} Platzhalter in einer Textdatei?
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"
Übrigens, wie leite ich die Ausgabe hier in eine externe Datei um? Muss ich etwas entkommen, wenn Variablen beispielsweise Anführungszeichen enthalten?
2) Verwenden von cat & sed zum Ersetzen jeder Variablen durch ihren Wert:
Gegeben template.txt:
The number is ${i}
The word is ${word}
Befehl:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Scheint mir schlecht zu sein, weil ich vielen verschiedenen Symbolen entkommen muss und bei vielen Variablen die Zeile zu lang ist.
Können Sie sich eine andere elegante und sichere Lösung vorstellen?