通过sed更新参数问题
问题描述:
在我的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
答
下一个字符后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
你需要逃避你的'sed'命令字面'/'的,或更改分隔符......它无法弄清楚什么是什么(而其他人也不可能)。而'sed'可能甚至没有必要,bash参数替换也可能起作用。 –