私は bash で拡張グロビングをいじりましたが、逆マッチャーには奇妙な点があり!(PATTERN)ます。次の例を考えてみましょう
$ touch ab ba
$ shopt -s extglob
$ echo *a*
ab ba
$ echo !(a)*a*
ab ba
$ echo *a*!(a)
ab
空の文字列に一致するように見えます!()が、なぜ*a*!(a)一致しないのbaですか?
ab2番目の例では次のように一致すると想定しました
!(a) -> ""
* -> ""
a -> "a"
* -> "b"
baこれは、次のように 3 番目のケースでの一致を示唆します。
* -> "b"
a -> "a"
* -> ""
!(a) -> ""
しかし、これはうまくいかないようです。
貪欲さを考えても、それは私には意味がありません。私は何が欠けていますか?
編集:
私はオンですGNU bash, Version 4.1.7(2)-release (i386-apple-darwin10.4.0)