Eu quero fazer uma operação em todos os arquivos em uma pasta específica que não iniciam com um prefixo específico (digamos exclude_
). Eu tenho um for
loop bash com uma glob estendida que se parece com isso:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Na linha de comando, isso funciona bem:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Mas quando eu o uso em um makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Estou tendo o erro a seguir:
$ make
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done'
Existe alguma fuga necessária que eu perdi?
.SHELLFLAGS
isso não funcionou para mim, mas colocar as bandeiras diretamenteSHELL=/bin/bash -O extglob -c
funcionou. Alguma idéia do porquê?