bash

时间:2017-05-19 09:07:22

标签: linux string bash replace

我想替换字符串“[[title]]”

中的所有“[[title]]”

我的代码是:

root@lll:/mnt/f/work/files# a="[[title]]"
root@lll:/mnt/f/work/files# title="1111"
root@lll:/mnt/f/work/files# echo ${a/[[title]]/$title}

输出是:

[[titl1111]

我想要的是:

1111

怎么做,为什么我得错了答案?

2 个答案:

答案 0 :(得分:1)

你必须逃避[,因为它是一个元字符

$ a='[[title]]'
$ title='1111'
$ echo "${a/\[\[title]]/$title}"
1111

另请参阅Pattern Matching

中的http://mywiki.wooledge.org/glob#Rangesman bash部分

答案 1 :(得分:0)

开场方括号是一个特殊字符,所以你必须逃避它:

echo "${a/\[\[title]]/$title}"