2012-05-02 133 views
1

在安裝程序期間,需要修改配置文件(log4j.properties)。Sed擴展失敗

log4j.properties的

一行包含

log4j.appender.R.File=${catalina.base}/logs/OurProductWorker.log 

我們希望它是changedto

log4j.appender.R.File=${catalina.base}/logs/OurProductWorker5.log 

(或一些類似的號碼)

這工作:

sed -i 's/OurProductWorker.log/'"$1.log"'/g' "log4j.properties" 

$1 =從1到9中調用該函數)的一些

這種失敗:

B_PRODUCT=OurProduct 
sed -i 's/"$B_PRODUCT"Worker.log/'"$1.log"'/g' "log4j.properties" 

我需要使用變量,因爲我們需要重新命名這個原始設備製造商,這顯然容易,只需在腳本的開頭更改一堆變量,而不是單個函數。

回答

2

試試這個

sed -i 's/'"$B_PRODUCT"'Worker.log/'"$1.log"'/g' "log4j.properties" 

你總是要「關閉」單引號具有可變擴展(如你以$ 1完成)。

我希望這會有所幫助。