我有下面的绳子
str="aaa.bbb.1.ccc.[mmm]."
如果我用下面的命令进行替换,那么它可以工作
# echo ${str/ccc.\[mmm\]./}
aaa.bbb.1.
现在我想将模式放入一个变量中,那么substitution命令将不起作用
# 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/