我正在运行一个sh脚本作为我的.travis.yml的一部分。虽然shell脚本没有失败,但它给出了下面的错误。
命令以1退出。
我尝试使用bash -x运行调试,没有错误。 问题是travis认为虽然它已经过去但构建失败了。
答案 0 :(得分:1)
如man bash
页面中所述:
如果成功,Shell builtin命令返回状态0(true),和 如果出错,则为非零(false) 在执行时发生。所有内置函数都返回退出状态2,表示使用不正确。
Bash本身返回最后执行的命令的退出状态, 除非发生语法错误,在这种情况下,它以非零退出 值。另请参阅下面的exit builtin命令。
执行的最后一个命令是:
[ "$BUILD_CHROMIUM" == 1 ] &&_build_chromium_crx "${zip_file}" "${BUILD_METADATA[${CHROMIUM_TARGET}]}"
它被评估为false
,退出状态为1:
'[' 0 == 1 ']'
因此,在此行的末尾添加|| true
会修复它。退出状态将始终为0.
或者,使用更符合代码预期行为的修补程序,例如exit 0
等。
exit [n]导致shell退出,状态为n。如果省略n, 退出状态是最后执行的命令的状态。 EXIT上的陷阱 在shell终止之前执行。
因此,您的清洁函数trap _clean_chrome EXIT
不是最后执行的函数。
有关退出状态here的更多信息。