1

我有以下字符串

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

如何使替换与变量中定义的模式一起工作?

4

1 回答 1

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
#
于 2015-05-20T04:32:16.950 回答