2015-05-04 108 views
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]. 

如何讓替換工作w ith在變量中定義的模式?

+1

不知道因此評論,但也許你需要轉義兩次? – npinti

+3

'var =「ccc。\ [mmm \]。」'適用於BASH – anubhava

+0

,如果你的意思是'var =「ccc。\\ [mmm \\]。」',這也行不通 – MOHAMED

回答

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 
#