Chcę wykonać operację na wszystkich plikach w określonym folderze, które nie zaczynają się od określonego prefiksu (powiedzmy exclude_
). Mam for
pętlę bash z rozszerzoną glob, która wygląda następująco:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
W wierszu poleceń działa to dobrze:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Ale kiedy używam go w makefile:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Otrzymuję następujący błąd:
$ 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'
Czy jest jakaś niezbędna ucieczka, za którą tęskniłem?
.SHELLFLAGS
nie zadziałało to dla mnie, ale bezpośrednie włożenie flagSHELL=/bin/bash -O extglob -c
. Jakieś pomysły dlaczego?