如何在进行字符串插值时转义结束括号

时间:2015-07-09 16:20:19

标签: bash

如果变量为空或未设置,我想echo变量的值或默认值。

我试过了:

echo "${X:-{}}"

结果:

  

值}

如果已设置X的值或

  

{}

如果没有设置。

设置变量时,我的输出中会出现一个右括号,这是一种不良行为。我该如何逃离收尾支架? (我尝试用" \"逃避,但没有成功......)

3 个答案:

答案 0 :(得分:3)

这样做:

echo "${X:-"{}"}"

答案 1 :(得分:2)

解析器认为第一个/\b(\S+@\S+\.\S+)\b/g正在关闭},因此打印变量,然后打印第二个${}。你需要逃避第一个结束括号:

}

答案 2 :(得分:1)

其他答案适用于bash(至少是正确的版本),zshksh,但似乎至少在sh的某些版本中无效。

使用变量进行替换应该适用于我希望的任何地方:

def={}
echo "${X:-$def}"