我想对不以特定前缀开头(例如exclude_
)的特定文件夹中的所有文件执行操作。我有一个bash for
循环,带有一个扩展的glob,看起来像这样:
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
。有什么想法吗?