のようにsedを。 1つの可能性は:parameter:
ですが、テンプレートファイルの正当なテキストと混同しないような類似のマーカーのペアがあれば良いです。あなたが何かを編集することが時々必要と時々ないポイントを取得した場合
sed -e "s/:param1:/$param1/g" \
-e "s/:param2:/$param2/g" \
-e "s/:param3:/$param3/g" \
httpd.conf.template > $HTTPDHOME/etc/httpd.conf
:
は(sed
、awk
、perl
で、...)次のようなsed
スクリプトを書きますOあなたが一時的にしないことを確認するためにトラップを使用する必要があります
{
echo "s/:param1:/$param1/g"
echo "s/:param2:/$param2/g"
echo "s/:param3:/$param3/g"
if [ "$somevariable" = "somevalue" ]
then echo "s/normaldefault/somethingspecial/g"
fi
} >/tmp/sed.$$
sed -f /tmp/sed.$$ httpd.conf.template > $HTTPDHOME/etc/httpd.conf
注:、あなたはそれが簡単にコマンド・ファイルに関連するsed
コマンドを作成し、それを実行するかもしれません
tmp=/tmp/sed.$$ # Consider using more secure alternative schemes
trap "rm -f $tmp; exit 1" 0 1 2 3 13 15 # aka EXIT HUP INT QUIT PIPE TERM
...code above...
rm -f $tmp
trap 0
これは、スクリプトがほとんどのもっともらしい信号に対して終了すると、一時ファイルが確実に削除されるようにします。前のコマンドからゼロ以外の終了ステータスを保持し、trap 0
コマンドの後にexit $exit_status
を使用することができます。
プロトタイプのhttpd.confファイルを別々に保管し、実行時に実際のファイルにテンプレート(プロトタイプ)ファイルを編集させるようにします。もちろん、それはスクリプトとテンプレートの2つのファイルが必要であることを意味します。しかし、2つの論理的にばらばらになったファイルは実際には分離しています。 –
はい、それは私が尋ねてきたことです(それがはっきりしない場合は申し訳ありません)が、私はそれを行う方法を知る必要がありました。私はPéterVargaの答えが私にそこにいくつかの調整をもたらすと思う。 – Brendan