Я хочу зробити операцію над усіма файлами в певній папці, які не починаються з певного префікса (скажімо 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
Але, коли я використовую його в makefile:
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
зроблено. Будь-які ідеї чому?