This question already has an answer here:
How to fix Makefile syntax error when using wildcard on make clean?

(1 个回答)


6年前关闭。




我有一个 Makefile 如下:
test:
    rm -rf !(.git|folder1|folder2)

运行 make test 后,必须删除文件夹中的所有内容,除了 .git/folder1/folder2/

相反,我收到以下错误:
/bin/bash: -c: line 0: syntax error near unexpected token `('
/bin/bash: -c: line 0: `rm -rf !(.git|folder1|folder2)'
make: *** [test] Error 2

我该如何解决?

最佳答案

!(...) 通配符语法仅在设置了 extglob shell 选项 ( shopt -s extglob ) 时才有效。默认情况下不启用此选项。

另一种方法是:

find '(' -name .git -o -name folder1 -o -name folder2 ')' -prune -o -exec rm -rf {} \;

关于bash - 在 Makefile 中使用 "syntax error near unexpected token ` 时如何修复 ('" '!(...)'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16158883/

10-16 04:32