在配置文件中有多个变量需要替换
脚本如下
newdir=/dir/to/my/file
sed -i "s/'MyDir'/${newdir}/g" myconf.conf
脚本没问题,如过变量中存在最后一位为 /
控制台会报错
unknown option to `s'
问题在于 $newdir 包含了 / 字符,因此 sed 命令最终看起来像 s/'MyDir'//dir/to/my/file/g,这不会起作用 第一个 /
实际上终止了 sed 表达式,而其他所有内容都是无用的。
幸运的是,sed 允许您使用任何字符作为 s 命令的分隔符,因此可以改写为:
sed -i "s|'MyDir'|${newdir}|g" myconf.conf
Comments