0

所以,我目前倾向于 Bash 脚本,我对模式匹配和文件名扩展之间的区别有点困惑。

Bash 参考手册内容如下:

分词后,除非-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*,不会像上面引用的那样扩展到以catbat开头的文件列表,而是更像一个非常有限的正则表达式。为什么?字符 *?[ 什么时候像正则表达式一样而不是扩展为当前目录中的匹配文件?

4

1 回答 1

0

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

于 2012-06-14T04:34:28.730 回答