小编Tim*_*nes的帖子

Bash 在 Makefile 中扩展通配符

我想对特定文件夹中不以特定前缀(例如exclude_)开头的所有文件进行操作。我有一个for带有扩展 glob的 bash循环,如下所示:

for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
Run Code Online (Sandbox Code Playgroud)

在命令行上,这工作正常:

 $ for FILE in foo/bar/!(exclude_*) ; do echo $FILE ; done
 foo/bar/apple
 foo/bar/pear
 foo/bar/banana
Run Code Online (Sandbox Code Playgroud)

但是,当我在 makefile 中使用它时:

target:
    for FILE in foo/bar/!(exclude_*) ; do echo $$FILE ; done
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

$ 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 …
Run Code Online (Sandbox Code Playgroud)

bash make

17
推荐指数
2
解决办法
7971
查看次数

标签 统计

bash ×1

make ×1