我怎么能找到替换的报价string?

输入文件:-

cat test.conf
DIR='/mnt/'

我想替换变量NEWDIR,变量可能是"/opt"或"/mnt/iso"

注: - 在输入文件中也单引号应保持。

NEWDIR="/opt/"
sed -i 's/^DIR=.*$/DIR=$NEWDIR/' test.conf

但它似乎并没有被替换string

cat test.conf
DIR='/mnt/'
分析解答

尝试:

NEWDIR=/mnt/
sed -i'' "s:^DIR=.*$:DIR='$NEWDIR':g" test.conf

切换为OP代码:

  • 使用:为实现sed的分隔符,以避免NEWDIR逃脱斜线
  • 使用sed "..."代替sed '...'允许参数扩展

用here-string测试:

$ NEWDIR=/mnt/
$ sed "s:^DIR=.*$:DIR='$NEWDIR':g" <<< "DIR='/opt/'"
DIR='/mnt/'