Bash Makefile比较产生shell命令的字符串
我的makefile中有以下内容(较大的多行bash脚本的一部分)。变量Bash Makefile比较产生shell命令的字符串,bash,makefile,Bash,Makefile,我的makefile中有以下内容(较大的多行bash脚本的一部分)。变量A,B来自通过$$(…)执行的shell命令,但下面的代码足以重现问题: test: A=1; \ B=2; \ diff < ( echo $$A ) < ( echo $$B ) || exit 1 测试: A=1\ B=2\ 差异
A
,B
来自通过$$(…)
执行的shell命令,但下面的代码足以重现问题:
test:
A=1; \
B=2; \
diff < ( echo $$A ) < ( echo $$B ) || exit 1
测试:
A=1\
B=2\
差异<(回声$$A)<(回声$$B)|退出1
意外标记“(”附近出现语法错误
如何在make中实现这一点?我知道Makefile中有
ifeq
和类似的功能,但我想它不适合Makefiles中的多行bash脚本。默认shell是/bin/sh
,它没有进程替换。
您需要更改外壳:
SHELL:=/bin/bash
test:
A=1; \
B=2; \
diff <( echo $$A ) <( echo $$B ) || exit 1
SHELL:=/bin/bash
测试:
A=1\
B=2\
diff默认shell是/bin/sh
,它没有进程替换。
您需要更改外壳:
SHELL:=/bin/bash
test:
A=1; \
B=2; \
diff <( echo $$A ) <( echo $$B ) || exit 1
SHELL:=/bin/bash
测试:
A=1\
B=2\
diff进程替换的正确语法是
<( echo $$A )
或者其他支持它的shell。进程替换的正确语法是
<( echo $$A )
或者其他支持它的shell。不要在他的Makefile上下文中的@User112638726之间留空格,$$
将导致shell seing$
@PSkocik啊,对了,我的错。不要在他的Makefile上下文中的@User112638726之间留空格,$$
将导致shell seing$
@PSkocik啊,对了,我的错。谢谢,我最终用bash shebang将所有与bash相关的东西拉到了一个单独的.sh
文件中。谢谢,我用bash shebang将所有与bash相关的东西拉到了一个单独的.sh
文件中