与anonumous管道一起使用的Diff在放入Makefile时会出现奇怪的错误

时间:2018-03-02 06:21:50

标签: makefile pipe diff

我尝试使用匿名管道在Makefile中运行'diff'。结果不同 观察比较从bash shell和Makefile启动'diff'。有任何澄清吗?感谢。

$ diff <(echo cat) <(echo dog)
1c1
< cat
---
> dog

$ make
diff <(echo cat) <(echo dog)
/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `diff <(echo cat) <(echo dog)'
make: *** [test] Error 2

我的Makefile是

test:
        diff <(echo cat) <(echo dog)

1 个答案:

答案 0 :(得分:1)

如错误消息所示,您的shell为sh而不是bash;所以你不能使用Bash语法功能。

一个常见的解决方法是设置SHELL=/bin/bash(或您的本地等效项),或者当然,将您的代码重构为符合POSIX的shell脚本。