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

bash ignore specific error code (pytest no tests warning error code 5)

我有一个程序可以测试我提供的 script/command 的错误代码。 在某些情况下,命令行 returns 一个我想忽略的警告错误代码(以 0 而不是 5 退出)。我希望其他错误代码也能传递相同的信息,并且尽可能简单(以保持单行命令)。

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

我想比我更有经验的人 bash 可以比我更快地想出更好的解决方案。

一些更具体的上下文:

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

谢谢!

您只需要捕捉、测试和(重新)提升适当的状态。

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

使用算术表达式:

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

我最后做了以下事情:

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

因为某些原因,Ruslan 的回答在 Travis 执行时出现了转义问题,而 chepner 的回答似乎不那么干净。