Você precisa:
shopt -s extglob
Obrigado @ Stéphane Chazales por me apontar no extglob.
Se eu digitar isso na linha de comando:
_longopt ()
{
case "$prev" in
--+([-a-z0-9_]))
echo foo
;;
esac;
}
funciona como esperado.
Se eu colocá-lo em um script (foo.sh), ele falhará:
./foo.sh: line 6: syntax error near unexpected token '('
./foo.sh: line 6: ' --+([-a-z0-9_]))'
Por quê?
E mais importante: dado que eu tenho uma função já definida como a acima, como posso convertê-la automaticamente em uma função que funciona em um script?
$ bash --version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Tags bash shell-script