在travis上运行sh脚本CI:命令退出1

时间:2017-06-05 14:54:03

标签: bash sh travis-ci

我正在运行一个sh脚本作为我的.travis.yml的一部分。虽然shell脚本没有失败,但它给出了下面的错误。

  

命令以1退出。

我尝试使用bash -x运行调试,没有错误。 问题是travis认为虽然它已经过去但构建失败了。

1 个答案:

答案 0 :(得分:1)

This更改fixes it

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等。

正如herehere所述:

  

exit [n]导致shell退出,状态为n。如果省略n,   退出状态是最后执行的命令的状态。 EXIT上的陷阱   在shell终止之前执行。

因此,您的清洁函数trap _clean_chrome EXIT不是最后执行的函数。

有关退出状态here的更多信息。