Jugueté con extended globbing en bash, pero hay alguna rareza con el matcher inverso !(PATTERN)
. Considere el siguiente ejemplo¿Por qué este patrón coincide con `ab`, pero no con` ba`?
$ touch ab ba
$ shopt -s extglob
$ echo *a*
ab ba
$ echo !(a)*a*
ab ba
$ echo *a*!(a)
ab
Ahora parece que !()
coincide con la cadena vacía, pero ¿por qué no lo hace *a*!(a)
partido ba
?
que supone que en el segundo ejemplo ab
está adaptada al igual que
!(a) -> ""
* -> ""
a -> "a"
* -> "b"
que a su vez podría sugerir un partido de ba
en el tercer caso al igual que
* -> "b"
a -> "a"
* -> ""
!(a) -> ""
pero parece que este doesn no funciona
Incluso teniendo en cuenta la codicia, eso no tiene ningún sentido para mí. ¿Qué me estoy perdiendo?
edición:
Estoy en GNU bash, Version 4.1.7(2)-release (i386-apple-darwin10.4.0)
mismo comportamiento en 'GNU bash, versión 4.1.5 (1) -release (x86_64-pc-linux-gnu) ' –
Por ahora, voy a asumir que este es un error en Bash. Mi informe de error: https://groups.google.com/d/topic/gnu.bash.bug/KkQNOi8F7q4/discussion – user123444555621