2017-06-22 28 views
0

在我的bash腳本中。我有如下通過sed更新參數問題

HOST_IP=`hostname -I` 

sed -i -e "/dirParam\.dprop_web_service_host=/ s/=.*/=http://$HOST_IP:9001/datasources/$INSTANCE" -e "s/\r$//" $SCB_ORDM/dir.properties 

之前: directorParam.dprop_web_service_host = http://localhost:9001

在執行上面的腳本。我遇到錯誤信息

的sed:-e表達式#1,焦炭50:未知的選項爲'S'

我期待: directorParam.dprop_web_service_host = http://10.10.405.30:9001

+0

你需要逃避你的'sed'命令字面'/'的,或更改分隔符......它無法弄清楚什麼是什麼(而其他人也不可能)。而'sed'可能甚至沒有必要,bash參數替換也可能起作用。 –

回答

1

下一個字符後s(替換命令)是/所以它是定界符它必須在圖案被轉義和替換字符串

sed -i -e "/dirParam\.dprop_web_service_host=/ s/=.*/=http:\/\/$HOST_IP:9001\/datasources\/$INSTANCE/" -e "s/\r$//" $SCB_ORDM/dir.properties 

否則另一個分隔符可以用來

sed -i -e "/dirParam\.dprop_web_service_host=/ [email protected]=.*@=http://$HOST_IP:9001/datasources/[email protected]" -e "s/\r$//" $SCB_ORDM/dir.properties 
+0

它的工作,但我得到 – BalaB

+0

directorParam.dprop_web_service_host = http://10.10.405.30:9001/data – BalaB

+0

我得到IP和端口之間的空間:(我用第二個選項 – BalaB