如何在正则表达式末尾转义花括号?

3
我有以下的bash脚本,用于将圆括号替换为花括号。
VARS=${VARS//(/{}
VARS=${VARS//)/}}

第一行可以正常运行,但第二行只会在结尾添加一个花括号。

如果我尝试使用反斜杠来转义花括号,那么反斜杠本身就会存储在变量中。

有没有其他方法可以将这些花括号从字符串中转义出来?

2个回答

1

你必须引用第一个},这样bash才不会认为这是表达式的结尾:

VARS=${VARS//)/\}}

1
这里是一种替代方法:
VARS=`echo ${VARS} | tr '()' '{}'`

虽然看起来用反斜杠转义花括号是有效的,但这是我之前使用的方法:

VARS=${VARS//(/{}
VARS=${VARS//)/\}}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接