【问题标题】:special character replace in bashbash中的特殊字符替换
【发布时间】:2017-10-19 08:05:04
【问题描述】:

我想替换字符串“[[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

怎么做,为什么我会得到错误的答案?

【问题讨论】:

  • 如果定义的替换词1111已经包含了想要的结果,那么用另一个词替换一个词是什么意思?

标签: linux string bash replace


【解决方案1】:

你必须转义[,因为它是一个元字符

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

另请参阅man bash 中的http://mywiki.wooledge.org/glob#RangesPattern Matching 部分

【讨论】:

    【解决方案2】:

    左方括号是一个特殊字符,所以你必须转义它:

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

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2014-11-03
      • 2011-12-28
      相关资源
      最近更新 更多