Sto scrivendo uno script per automatizzare la creazione di file di configurazione per Apache e PHP per il mio server web. Non voglio usare alcuna GUI come CPanel o ISPConfig.
Ho alcuni modelli di file di configurazione di Apache e PHP. Lo script Bash deve leggere i modelli, effettuare la sostituzione delle variabili e generare modelli analizzati in alcune cartelle. Qual è il modo migliore per farlo? Posso pensare a diversi modi. Qual è il migliore o potrebbe esserci qualche modo migliore per farlo? Voglio farlo in puro Bash (ad esempio in PHP è facile)
1) Come sostituire i segnaposto $ {} in un file di testo?
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"
A proposito, come posso reindirizzare l'output su file esterno qui? Devo sfuggire a qualcosa se le variabili contengono, diciamo, virgolette?
2) Usare cat & sed per sostituire ogni variabile con il suo valore:
Dato template.txt:
The number is ${i}
The word is ${word}
Comando:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Mi sembra male a causa della necessità di sfuggire a molti simboli diversi e con molte variabili la linea sarà troppo lunga.
Riesci a pensare a qualche altra soluzione elegante e sicura?