Makefile比较产生shell命令的字符串

我在我的makefile中有以下内容(一个更大的多行bash脚本的一部分)。 变量AB来自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