Makefile和命令行的行为不同

时间:2017-11-30 15:19:06

标签: bash makefile

我目前正在开展一个更大的项目,我想用几个不同的代码作为输入来测试可执行文件 我称之为./test < code1 在命令echo $?之后,它显示最后返回的值[0,1,2,..]

我想自动化,所以我在makefile创建了这样的电话:

#makefile 
[...]
test : 
    ./test < code1 
    @echo $$?
    ./test < code2 
    @echo $$?
    [...]

[...]

所以我可以致电make test

当程序返回0成功时,一切正常。但是当程序必须返回0以外的东西时,它会向我显示:

./test < code3
Makefile:19: recipe for target 'test' failed
make: *** [test[ Error 2

奇怪的是,当我尝试用代码调用程序时,它会在命令行中崩溃,如:

./test < code3; echo $?  

它完美地运作并向我显示最后退出状态(对于exapmle 3) 我现在很困惑,因为我认为它应该是一样的。有人可以帮帮我吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

请参阅此答案:https://stackoverflow.com/a/41452754/939557

您需要将echo放入与测试调用相同的逻辑行中:

test : 
        ./test < code1; echo $$?
        ./test < code2; echo $$?