自分の Web サーバー用に Apache と PHP の構成ファイルの作成を自動化するスクリプトを作成しています。CPanel や ISPConfig などの GUI は使いたくありません。
Apache および PHP 構成ファイルのテンプレートがいくつかあります。Bash スクリプトは、テンプレートを読み取り、変数置換を行い、解析されたテンプレートをいくつかのフォルダーに出力する必要があります。それを行う最善の方法は何ですか?いくつかの方法が考えられます。どちらが最適ですか、またはそれを行うためのより良い方法がいくつかありますか? 純粋なBashでそれをやりたいです(たとえば、PHPでは簡単です)
1)テキスト ファイル内の ${} プレースホルダーを置き換える方法は?
テンプレート.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/"
多くの異なるシンボルをエスケープする必要があり、多くの変数を使用すると行が長すぎるため、私には悪いようです。
他のエレガントで安全なソリューションを考えられますか?