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