当前位置: 首页 > 知识库问答 >
问题:

如何使用“if”语句检查退出状态

严琨
2023-03-14

为了响应特定的输出,检查if语句中的退出状态的最佳方法是什么?

我在想

if [ $? -eq 1 ]
then
   echo "blah blah blah"
fi

我还有一个问题,退出语句位于if语句之前,因为它必须有退出代码。而且,我知道我做错了什么,因为退出显然会退出程序。

共有3个答案

彭海阳
2023-03-14

显式if语句的替代方法

最低限度:

test$-等式0 | |呼应“发生了不好的事情”

完成:

EXITCODE=$?
test $EXITCODE -eq 0 && echo "something good happened" || echo "something bad happened";
exit $EXITCODE
荣轶
2023-03-14

请注意,退出代码!=0用于报告错误。所以,最好是:

retVal=$?
if [ $retVal -ne 0 ]; then
    echo "Error"
fi
exit $retVal

而不是

# will fail for error codes == 1
retVal=$?
if [ $retVal -eq 1 ]; then
    echo "Error"
fi
exit $retVal
闾丘山
2023-03-14

每个运行的命令都有一个退出状态。

该检查检查的是在该行运行之前最近完成的命令的退出状态。

如果您希望您的脚本在测试返回true时退出(之前的命令失败),那么您可以将exate1(或其他什么)放在if块中的back之后。

也就是说,如果您正在运行该命令,并且想要测试其输出,那么使用以下命令通常更简单。

if some_command; then
    echo command returned true
else
    echo command returned some error
fi

或者要扭转这种局面,请使用进行否定

if ! some_command; then
    echo command returned some error
else
    echo command returned true
fi

请注意,这两个都不关心错误代码是什么。如果你知道你只关心特定的错误代码,那么你需要手动检查$?

 类似资料:
  • 问题内容: 有哪些方法可以过早退出子句? 有时候,我在编写代码时希望将一条语句放在子句中,只是要记住,这些语句只能用于循环。 让我们以以下代码为例: 我可以想到一种方法:假设退出情况发生在嵌套的if语句内,请将剩余的代码包装在一个大的else块中。例: 问题是更多的退出位置意味着更多的嵌套/缩进代码。 另外,我可以编写我的代码以使子句尽可能小,并且不需要任何退出。 有人知道退出子句的好/更好的方法

  • 假设您有一个二进制文件,其中包含类型为int或double的数字。您不知道文件中数字的顺序,但它们的顺序记录在文件开头的字符串中。字符串由表示int的字母i和表示double的字母d组成,按后续数字类型的顺序排列。字符串是使用writeUTF方法写入的。 例如,字符串“iddiiddd”表示该文件包含八个值,如下所示:一个整数,后跟两个双精度,后跟两个整数,后跟三个双精度。 我的问题是,如果字符串

  • 有可能做如下事情吗: 或者: 我知道用很多if-else语句也可以实现同样的目标,但如果它像上面那样工作,看起来会更干净。

  • 问题内容: 我有应该测试的方法。代码(当然,某些部分被剪切): 问题:如何在使用Mockito和JUnit的方法中检查if语句?我想将相等的日期传递给方法,然后检查我的if语句是否正常工作。 问题答案: 如果您确实想要 纯 单元测试而不是集成测试,则可以依靠注释来模拟服务并将模拟插入到的实例中。 然后,您可以提出3个测试: 日期正确无误的一项测试, 日期正确但相等的另一个 最后一个日期不正确的日期

  • 问题内容: 我正在寻找某种if语句来控制不同元素的状态。 我已经尝试了以下内容,但无法编译 问题答案: LESS具有用于mixin的保护表达式,而不是单个属性。 因此,您将创建一个像这样的mixin: 并通过调用或(或完全不调用)将其打开或关闭。