我的makefile中有以下内容(更大的多行bash脚本的一部分)。变量A
,B
来自shell命令执行$$(...)
,但下面的代码足以重现问题:
test:
A=1; \
B=2; \
diff < ( echo $$A ) < ( echo $$B ) || exit 1
意外令牌附近的语法错误`(&#39;。
如何在make中完成?我知道Makefile中有ifeq
和类似的东西,但我猜它不适合Makefile中的多行bash脚本。
答案 0 :(得分:2)
默认shell为/bin/sh
,没有进程替换。
你需要改变shell:
SHELL:=/bin/bash
test:
A=1; \
B=2; \
diff <( echo $$A ) <( echo $$B ) || exit 1
答案 1 :(得分:2)
进程替换的正确语法是
<( echo $$A )
即。 <
和(
之间没有空格。
请务必指定
SHELL ::= /bin/bash
或其他支持它的shell。