Я хочу сделать операцию со всеми файлами в определенной папке, которые не начинаются с определенного префикса (скажем exclude_
). У меня есть for
цикл bash с расширенным глобусом, который выглядит следующим образом:
for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
В командной строке это работает нормально:
$ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
foo/bar/apple
foo/bar/pear
foo/bar/banana
Но когда я использую его в make-файле:
target:
for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Я получаю следующую ошибку:
$ 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'
Есть ли какие-то необходимые побеги, которые я пропустил?
.SHELLFLAGS
меня это не сработало, но поставить флаги прямо у меняSHELL=/bin/bash -O extglob -c
получилось. Есть идеи почему?