Je veux faire une opération sur tous les fichiers d'un dossier particulier qui ne commencent pas par un préfixe particulier (disons exclude_
). J'ai une for
boucle bash avec un glob étendu qui ressemble à ceci:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Sur la ligne de commande, cela fonctionne bien:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Mais, quand je l'utilise dans un makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
J'obtiens l'erreur suivante:
$ 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'
Y a-t-il des évasions nécessaires que j'ai ratées?
.SHELLFLAGS
n'a pas fonctionné pour moi, mais mettre les drapeaux directementSHELL=/bin/bash -O extglob -c
a fonctionné. Des idées pourquoi?