我有以下字符串
str="aaa.bbb.1.ccc.[mmm]."
如果我用下面的命令进行替换,那么它就可以工作
# echo ${str/ccc.\[mmm\]./}
aaa.bbb.1.
现在我想把模式放到一个变量中,那么替换命令就不行了
# var="ccc.\[mmm\]."
# echo ${str/$var/}
aaa.bbb.1.ccc.[mmm].
# var="ccc.[mmm]."
# echo ${str/$var/}
aaa.bbb.1.ccc.[mmm].
如何使用变量中定义的模式进行替换?
最佳答案
将表达式放在双引号中:
echo "${str/$var/}"
在 busybox 上为我工作:
# str="aaa.bbb.1.ccc.[mmm]."
# echo ${str/ccc.\[mmm\]./}
aaa.bbb.1.
# var="ccc.\[mmm\]."
# echo ${str/$var/}
aaa.bbb.1.ccc.[mmm].
# echo "${str/$var/}"
aaa.bbb.1.
# ls -l /bin/sh
lrwxrwxrwx 1 root root 7 May 9 05:22 /bin/sh -> busybox
#
关于regex - 当模式包含 "["时,字符串替换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30032931/