Bash:模式匹配/文件名扩展

时间:2012-06-14 04:18:29

标签: bash scripting expansion

所以,我现在正在使用Bash脚本,我对模式匹配和文件名扩展之间的区别感到困惑。

Bash Reference manual读取:

  

分词后,除非-f' option has been set (see section 4.3.1 The Set Builtin), Bash scans each word for the characters *',?', and ['。如果出现其中一个字符,则该单词将被视为模式,并替换为与该模式匹配的按字母顺序排列的文件名列表。

这对我来说表明以下情况可能不会达到我们想要的效果:

if [[ $a == [cb]at* ]] ; then ...

在这种情况下,[cb]at*不会扩展为以 cat bat 开头的文件列表,如上所述,但行为更像是非常有限的正则表达。为什么?什么时候字符*?[表现得像正则表达式而不是扩展到当前目录中的匹配文件?

1 个答案:

答案 0 :(得分:0)

bash以不同的方式解释[[ ... ]]内的令牌。这是一个特色。