2017-06-22 73 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