Voglio fare un'operazione su tutti i file in una cartella particolare che non iniziano con un prefisso particolare (diciamo exclude_
). Ho un for
loop bash con un glob esteso che assomiglia a questo:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Sulla riga di comando, funziona perfettamente:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Ma quando lo uso in un makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Ottengo il seguente errore:
$ 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'
C'è qualche evasione necessaria che mi è sfuggita?
.SHELLFLAGS
non ha funzionato per me, ma ha messo le bandiere direttamente dentroSHELL=/bin/bash -O extglob -c
. Qualche idea sul perché?