bash脚本中的[...]代表什么?

时间:2011-01-31 11:01:27

标签: linux bash scripting

我正在阅读this教程,我遇到了bash脚本使用[...]作为外卡字符。那么究竟什么[...]站在bash脚本中?

3 个答案:

答案 0 :(得分:6)

这是一种正则表达式的字符匹配语法;来自Bash Reference Manual§3.5.8.1 (Pattern Matching)

  

[...]      匹配任何一个包含的字符。用连字符分隔的一对字符表示范围表达式;使用当前区域设置的整理顺序和字符集在这两个字符之间进行排序的任何字符都匹配。如果‘[’后面的第一个字符是‘!’或{{ 1}}然后匹配任何未包含的字符。可以通过将‘^’包括为集合中的第一个或最后一个字符来匹配‘−’。可以通过将‘]’包括为集合中的第一个字符来匹配LC_COLLATE。范围表达式中字符的排序顺序由当前语言环境和‘[a-dx-z]’ shell变量的值决定(如果已设置)。

     

例如,在默认的C语言环境中,‘[a-dx-z]’相当于'[abcdxyz]'。许多语言环境按字典顺序对字符进行排序,在这些语言环境中‘[abcdxyz]’通常不等同于‘[aBbCcDdxXyYz]’;例如,它可能等同于LC_COLLATE。要获得括号表达式中范围的传统解释,可以通过将LC_ALL‘C’环境变量设置为值‘[’来强制使用C语言环境。

     

‘]’[:class:]中,可以使用语法 alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit 指定字符类,其中class是posix标准中定义的以下类之一:

‘_’
  

字符类匹配属于该类的任何字符。单词字符类匹配字母,数字和字符‘[’

     

‘]’[=c=]中,可以使用语法‘[’指定等价类,该语法匹配具有相同排序权重(由当前区域设置定义)的所有字符作为人物c。

     

‘]’[.symbol.]中,语法{{1}}与整理符号符号匹配。

(强调添加到最常见的使用模式)

答案 1 :(得分:5)

除了globbing('*''?')之外,本教程还使用它来讲述正则表达式。例如,[a-z]正则表达式将匹配一个小写字符。

答案 2 :(得分:1)

实际上,例如,通配符是[abc]。它匹配三个字母中的一个。