Makefile比较产生shell命令的字符串
我在我的makefile中有以下内容(一个更大的多行bash脚本的一部分)。 变量A
, B
来自shell命令通过$$(...)
执行,但下面的代码足以重现该问题:
test:
A=1;
B=2;
diff < ( echo $$A ) < ( echo $$B ) || exit 1
语法错误附近的意外令牌`('。
这怎么能做到? 我知道在Makefile中有ifeq
和类似的东西,但我猜它不适合Makefiles中的多行bash脚本。
过程替换的正确语法是
<( echo $$A )
即<
和(
之间没有空格。
一定要指定
SHELL ::= /bin/bash
或其他一些支持它的shell。
缺省shell是/bin/sh
,它没有进程替代。 您需要更改外壳:
SHELL:=/bin/bash
test:
A=1;
B=2;
diff <( echo $$A ) <( echo $$B ) || exit 1
链接地址: http://www.djcxy.com/p/97109.html
上一篇: Makefile compare strings resulting in shell command
下一篇: Makefile multiline dash command run executable in a detached process