Makefile比较字符串导致shell命令

时间:2015-07-22 09:59:32

标签: bash makefile

我的makefile中有以下内容(更大的多行bash脚本的一部分)。变量AB来自shell命令执行$$(...),但下面的代码足以重现问题:

test:
    A=1; \
    B=2; \
    diff < ( echo $$A ) < ( echo $$B ) || exit 1
  

意外令牌附近的语法错误`(&#39;。

如何在make中完成?我知道Makefile中有ifeq和类似的东西,但我猜它不适合Makefile中的多行bash脚本。

2 个答案:

答案 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。