Linux bash脚本中的[…]代表什么?
我正在阅读教程,我发现bash脚本使用[…]作为通配符。那么,bash脚本中的[…]到底代表什么呢?除了globbing(Linux bash脚本中的[…]代表什么?,linux,bash,scripting,Linux,Bash,Scripting,我正在阅读教程,我发现bash脚本使用[…]作为通配符。那么,bash脚本中的[…]到底代表什么呢?除了globbing(“*”和“?”)之外,教程中还使用了正则表达式。例如[a-z]正则表达式将匹配一个小写字符。实际上,通配符就是[abc]。它匹配三个字母中的一个。这是一种正则表达式样式的字符匹配语法;从 […] 匹配任何一个包含的字符。由连字符分隔的一对字符表示范围表达式;使用当前区域设置的排序顺序和字符集在这两个字符(包括)之间排序的任何字符都是匹配的。如果'['后面的第一个字符是'!'或
“*”
和“?”
)之外,教程中还使用了正则表达式。例如[a-z]
正则表达式将匹配一个小写字符。实际上,通配符就是[abc]
。它匹配三个字母中的一个。这是一种正则表达式样式的字符匹配语法;从
[…]
匹配任何一个包含的字符。由连字符分隔的一对字符表示范围表达式;使用当前区域设置的排序顺序和字符集在这两个字符(包括)之间排序的任何字符都是匹配的。如果'['
后面的第一个字符是'!'
或'^'
则匹配未包含的任何字符。'−’代码>可以通过将其作为集合中的第一个或最后一个字符来匹配。']'
可以通过将其作为集合中的第一个字符来匹配。范围表达式中字符的排序顺序由当前区域设置和LC\u COLLATE
shell变量(如果设置)的值决定
例如,在默认的C语言环境中,“[a-dx-z]”
相当于“[abcdxyz]”。许多语言环境按字典顺序对字符进行排序,在这些语言环境中,“[a-dx-z]”
通常不等同于“[abcdxyz]”
;例如,它可能相当于'[abbcddxxyyz]
。要获得括号表达式中范围的传统解释,可以通过将LC\u-COLLATE
或LC\u-ALL
环境变量设置为值'C'
来强制使用C语言环境
在'['
和']
中,可以使用语法[:class://code>
指定字符类,其中class是posix标准中定义的以下类之一:
字符类匹配属于该类的任何字符。word character类匹配字母、数字和字符'
在'['
和']
中,可以使用语法[=c=]
指定等价类,该语法匹配与字符c具有相同排序权(由当前区域设置定义)的所有字符
在'['
和']
中,语法[.symbol.]
与排序符号匹配
(重点添加到最常见的使用模式)
alnum alpha ascii blank cntrl digit graph lower
print punct space upper word xdigit