2012-06-14 46 views
0

所以,我现在倾向于Bash脚本编写,而且我对模式匹配和文件名扩展之间的区别有点困惑。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*不会扩展到文件列表开始蝙蝠为上面的引用表明,但更像是一个非常有限的正则表达式。为什么?什么时候做字符*?[就像正则表达式而不是扩展到当前目录中的匹配文件?

回答

0

bash不同地解释[[ ... ]]内的标记。这是一个功能。