Kendi web sunucum için Apache ve PHP için yapılandırma dosyaları oluşturmayı otomatikleştirmek için bir komut dosyası yazıyorum. CPanel veya ISPConfig gibi herhangi bir GUI kullanmak istemiyorum.
Apache ve PHP yapılandırma dosyalarının bazı şablonlarına sahibim. Bash komut dosyasının şablonları okuması, değişken ikamesi yapması ve ayrıştırılmış şablonları bazı klasörlere çıkarması gerekir. Bunu yapmanın en iyi yolu nedir? Birkaç yol düşünebilirim. Hangisi en iyisi veya bunu yapmanın daha iyi yolları var mı? Bunu saf Bash ile yapmak istiyorum (örneğin PHP'de kolaydır)
1) Bir metin dosyasındaki $ {} yer tutucuları nasıl değiştirilir?
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, çıktıyı burada harici bir dosyaya nasıl yönlendirebilirim? Değişkenler, örneğin tırnak işaretleri içeriyorsa bir şeyden kaçmam gerekir mi?
2) Her değişkeni değeriyle değiştirmek için cat & sed'i kullanma:
Template.txt verildiğinde:
The number is ${i}
The word is ${word}
Komut:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
Birçok farklı sembolden kaçma ihtiyacından dolayı bana kötü görünüyor ve birçok değişkenle birlikte satır çok uzun olacak.
Başka zarif ve güvenli bir çözüm düşünebilir misiniz?