私は自分のWebサーバー用のApacheとPHPの構成ファイルの作成を自動化するスクリプトを書いています。CPanelやISPConfigのようなGUIを使いたくありません。
ApacheとPHPの構成ファイルのテンプレートがいくつかあります。Bashスクリプトは、テンプレートを読み取り、変数を置換し、解析されたテンプレートをいくつかのフォルダーに出力する必要があります。それを行う最良の方法は何ですか?私はいくつかの方法を考えることができます。どちらが最高ですか、それを行うにはもっと良い方法がありますか?純粋なBashでそれを実行したい(たとえば、PHPでは簡単です)
1)テキストファイルの$ {}プレースホルダーを置き換える方法は?
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"
ところで、ここで外部ファイルに出力をリダイレクトするにはどうすればよいですか?変数に引用符が含まれている場合、何かをエスケープする必要がありますか?
2)各変数をその値で置き換えるためにcat&sedを使用する:
与えられたtemplate.txt:
The number is ${i}
The word is ${word}
コマンド:
cat template.txt | sed -e "s/\${i}/1/" | sed -e "s/\${word}/dog/"
多くの異なるシンボルをエスケープする必要があり、多くの変数があると行が長くなりすぎるので、私には悪いようです。
他のエレガントで安全なソリューションを思いつくことができますか?