【问题标题】:bash ignore specific error code (pytest no tests warning error code 5)bash 忽略特定错误代码(pytest no tests 警告错误代码5)
【发布时间】:2017-03-29 11:15:54
【问题描述】:

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

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

我想在 bash 方面比我更有经验的人可能会比我更快地提出更好的解决方案。

一些更具体的上下文:

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

谢谢!

【问题讨论】:

    标签: bash error-code


    【解决方案1】:

    使用算术表达式:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        我最终做了以下事情:

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

        因为某种原因,当特拉维斯执行它时,Ruslan 的回答出现了转义问题,而 chepner 的回答似乎不那么干净。

        【讨论】:

          猜你喜欢
          • 2014-04-23
          • 2018-06-21
          • 1970-01-01
          • 1970-01-01
          • 2013-10-20
          • 2017-12-17
          • 1970-01-01
          • 2013-03-11
          • 1970-01-01
          相关资源
          最近更新 更多