sed命令替换含路径变量失败,求解决方案
解决sed替换含斜杠路径的语法错误问题
问题根源是你传入的路径包含斜杠/,而sed默认用/作为替换命令的分隔符,路径里的/会被误判为命令的分隔符,直接触发语法错误。
可行解决办法
方法1:更换sed替换命令的分隔符(推荐)
直接把替换命令的分隔符换成路径里不存在的字符,比如#或|,操作简洁不易出错:
用#作为分隔符:
sed -i "s#stg_area#$1#" /srv/ppc/abc.properties
用|作为分隔符:
sed -i "s|stg_area|$1|" /srv/ppc/abc.properties
方法2:转义路径中的斜杠(较繁琐)
先将变量$1里的/转义为\/,再传入sed命令:
escaped_path=$(echo "$1" | sed 's/\//\\\//g') sed -i "s/stg_area/$escaped_path/" /srv/ppc/abc.properties
内容的提问来源于stack exchange,提问作者Tarique Hussain
相关产品推荐
相关产品推荐

