我在 $VALUE 的内容中有特殊字符,我想将其添加到文件 ( $FILE
) 中。
当我运行这个命令时:
sed -i "s|T_VALUE|$VALUE|" "$FILE"
我有一个错误未终止 s 命令
我看到一些帖子说我需要转义特殊字符,但我不知道它们是$VALUE
动态值。我该如何解决这个问题?
答案1
您可以使用 Perl 进行更精美的引用。为了避免混淆,您可以通过环境变量传递参数。
$ SUB_LH='?|'
$ SUB_RH='/\'
$ cat mydata.txt
x?|y
?|ab?|
$ SUB_LH=$SUB_LH SUB_RH=$SUB_RH perl -p -i.bak -e 's/\Q$ENV{SUB_LH}\E/$ENV{SUB_RH}/g' mydata.txt
$ cat mydata.txt
x/\y
/\ab/\