从bash脚本运行makefile命令并返回错误结果代码
我有一个python生成文件。我可以从bash脚本运行它的命令,如下所示从bash脚本运行makefile命令并返回错误结果代码,bash,shell,unix,makefile,Bash,Shell,Unix,Makefile,我有一个python生成文件。我可以从bash脚本运行它的命令,如下所示 local make_lint_output="" make_lint_output="$( make test-unit 2>&1 )" echo "${make_lint_output}" local result=$? if (( result == 0 )); then return 1 fi 但问题是它总是返回$?即使make命令退出时出现错误,仍为0 在出现故障时,输出部分如下所
local make_lint_output=""
make_lint_output="$( make test-unit 2>&1 )"
echo "${make_lint_output}"
local result=$?
if (( result == 0 )); then
return 1
fi
但问题是它总是返回$?即使make命令退出时出现错误,仍为0
在出现故障时,输出部分如下所示
E:没有名为“串行”的模块
!!!!!!!!!!!!!!!!!!! 中断:收集过程中出现3个错误!!!!!!!!!!!!!!!!!!!!
===========================================0.17秒内出现3个错误============================
Makefile:61:目标“测试电源控制”的配方失败
美元?在这种情况下,应返回非0的值。
我错过了什么?我正在unix机器上运行bash脚本。echo成功,因此返回0。您必须先捕获返回代码,然后才能运行另一个可能会关闭$?在回显之前。回显成功,因此返回0。您必须先捕获返回代码,然后才能运行另一个可能会关闭$?在echo之前。如果您只是将脚本编写为!使测试单元2>&1。在通过echo写入stdout之前,输出将被写入stdout,而不是被shell捕获,并且返回值将被适当地反转,就像if语句所做的那样。如果只将脚本编写为!使测试单元2>&1。然后,在通过echo写入stdout之前,输出将被写入stdout,而不是被shell捕获,并且返回值将被适当地反转,就像if语句所做的那样。