我目前正在开展一个更大的项目,我想用几个不同的代码作为输入来测试可执行文件
我称之为./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) 我现在很困惑,因为我认为它应该是一样的。有人可以帮帮我吗? 谢谢!
答案 0 :(得分:1)
请参阅此答案:https://stackoverflow.com/a/41452754/939557
您需要将echo
放入与测试调用相同的逻辑行中:
test :
./test < code1; echo $$?
./test < code2; echo $$?