bash忽略特定的错误代码(pytest没有测试警告错误代码5)

时间:2016-11-15 14:17:25

标签: bash error-code

我有一个程序可以测试我提供的脚本/命令的错误代码。 在某些情况下,命令行会返回一个我想忽略的警告错误代码(以0而不是5退出)。我希望其他错误代码能够传递相同的内容,并且尽可能简单(保留单行命令)。

我尝试使用pytest || [ $? -eq 5 ],它会忽略来自命令的错误代码5,但会将所有非零错误代码替换为1(而不是实际的错误代码)。

我想有人比bash更有经验可以提供比我更好的解决方案。

更具体的背景:

我正在使用pytest来测试我的项目。其中一些目前没有测试,pytest的默认行为是将其视为错误(错误代码5)。我想将这个错误视为成功。实际上,我希望特拉维斯把这个错误视为成功。

谢谢!

3 个答案:

答案 0 :(得分:3)

使用算术表达式:

exit $(( $? == 5 ? 0 : $? ))

答案 1 :(得分:2)

你必须抓住,测试和(重新)提升适当的状态。

command
case $? in
  5) exit 0 ;;
  *) exit ;;
esac

答案 2 :(得分:0)

我最终做了以下事情:

pytest ... ; err=$? ; if (( $err != 5 )) ; then exit $err ; fi

因为出于某种原因,当特拉维斯执行时,鲁斯兰的答案已经解决了问题,而且查普纳的答案似乎并不那么干净。