4
我可以用猛砸,如果我想要一个右方括号]
被包括在该组来匹配一组字符正则表达式方闭括号
$ [[ a =~ [abc] ]]; echo $?
0
然而,它未能
$ [[ a =~ [abc\]] ]]; echo $?
1
$ [[ a =~ [abc\\]] ]]; echo $?
1
我可以用猛砸,如果我想要一个右方括号]
被包括在该组来匹配一组字符正则表达式方闭括号
$ [[ a =~ [abc] ]]; echo $?
0
然而,它未能
$ [[ a =~ [abc\]] ]]; echo $?
1
$ [[ a =~ [abc\\]] ]]; echo $?
1
从手册页regex(7)
:
To include a literal ']' in the list, make it the first character (fol-
lowing a possible '^').
测试:
$ [[ "]" =~ []abc] ]]; echo $?
0
这很有趣。为什么命令在一个字符类中是重要的? – David
@大卫,以避免必须逃脱它。空字符类无效,因此在'[]'中,']'不能是字符类的结尾。因此可以将其视为文字字符。类似的东西用于连字符(通常创建范围,除非它们是第一个或最后一个字符)和插入符(除非它们不是第一个字符否定字符类)。 –