Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从bash脚本运行makefile命令并返回错误结果代码_Bash_Shell_Unix_Makefile - Fatal编程技术网

从bash脚本运行makefile命令并返回错误结果代码

从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 在出现故障时,输出部分如下所

我有一个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

在出现故障时,输出部分如下所示

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语句所做的那样。