Ich möchte eine Operation für alle Dateien in einem bestimmten Ordner ausführen, die nicht mit einem bestimmten Präfix beginnen (z exclude_
. B. ). Ich habe eine Bash- for
Schleife mit einem erweiterten Glob, der so aussieht:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Auf der Kommandozeile funktioniert das gut:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Aber wenn ich es in einem Makefile benutze:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Ich erhalte folgenden Fehler:
$ 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'
Gibt es eine notwendige Fluchtmöglichkeit, die ich verpasst habe?
.SHELLFLAGS
funktionierte das nicht für mich, aber das Setzen der Flaggen direkt inSHELL=/bin/bash -O extglob -c
tat. Irgendwelche Ideen warum?