Bash 中哪些地方通过正则表达式进行模式匹配?

Bash 中哪些地方通过正则表达式进行模式匹配?

Bash 中有几个地方使用了模式匹配。

  1. Bash 中的模式匹配是通过正则表达式还是通配符(与文件名扩展中的样式相同)完成的?

  2. 在 Bash 中,正则表达式完成的模式匹配仅用于[[..]]with=~运算符吗?其他地方没有吗?

    还有其他地方可以通过正则表达式进行模式匹配吗?

答案1

man bash

当使用 == 和 != 运算符时,运算符右侧的字符串被视为模式,并根据模式匹配下描述的规则进行匹配,就像启用了 extglob shell 选项一样。

为了=~

还可以使用附加二元运算符 =~,其优先级与 == 和 != 相同。使用时,运算符右侧的字符串被视为扩展正则表达式并进行相应匹配(如 regex(3) 中)。

因此,regex(3)仅用于在以下情况下匹配模式=~


否则,按如下方式完成:

路径名扩展:

     分词后,除非设置了 -f 选项,否则 bash 会扫描每个单词中的字符 *、? 和 [。如果出现这些字符之一,则该单词被视为一种模式,并替换为按字母顺序排序的与该模式匹配的文件名列表(请参阅下面的模式匹配)。

模式匹配

     除了下面描述的特殊模式字符之外,模式中出现的任何字符都与自身匹配。 NUL 字符不能出现在模式中。反斜杠转义后面的字符;匹配时转义的反斜杠将被丢弃。如果要按字面匹配特殊模式字符,则必须用引号引起来。

还访问外部全局变量它扩展了几个模式匹配运算符

相关内容