我在bash中摆弄extended globbing,但逆匹配器!(PATTERN)
有一些奇怪之处。请看下面的例子为什么这个模式匹配`ab`,而不是`ba`?
$ touch ab ba
$ shopt -s extglob
$ echo *a*
ab ba
$ echo !(a)*a*
ab ba
$ echo *a*!(a)
ab
现在看起来!()
匹配空字符串,但为什么不*a*!(a)
比赛ba
?
我认为在第二个例子ab
是像这样
!(a) -> ""
* -> ""
a -> "a"
* -> "b"
这反过来会建议匹配的ba
在第三种情况下,像这样
* -> "b"
a -> "a"
* -> ""
!(a) -> ""
不过貌似这并未匹配没有工作。
即使考虑到贪婪,这对我没有任何意义。我错过了什么?
编辑:
我在GNU bash, Version 4.1.7(2)-release (i386-apple-darwin10.4.0)
在'GNU的bash,版本4.1.5(1)-release下(x86_64-PC-Linux的GNU) ' –
相同的行为现在,我会认为这是一个猛砸错误。我的错误报告:https://groups.google.com/d/topic/gnu.bash.bug/KkQNOi8F7q4/discussion – user123444555621