当模式包含&#34时,字符串替换不起作用["

时间:2015-05-04 14:38:24

标签: regex linux shell ash

我有以下字符串

# 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].

现在我想将模式放入变量中,然后替换命令将不起作用

{{1}}

如何使用变量中定义的模式进行替换?

1 个答案:

答案 0 :(得分:0)

将表达式用双引号括起来:

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
#