首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Bash的if语句检查退出状态?

如何使用Bash的if语句检查退出状态?
EN

Stack Overflow用户
提问于 2018-08-02 06:09:35
回答 2查看 0关注 0票数 0

我想知道在if语句中检查退出状态的最佳方法是什么,以便响应特定的输出。

我想的是:

代码语言:txt
复制
if [ $? -eq 1 ]
then
   echo "blah blah blah"
fi

我还面临的问题是,Exit语句位于if语句之前,它必须有退出代码,如何解决?

EN

回答 2

Stack Overflow用户

发布于 2018-08-02 14:44:34

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

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

如果你想你的当测试返回true时退出的脚本(前面的命令失败),那么你将exit 1(或其他)放在该if块后面echo

尽管如此,如果你正在运行该命令并希望使用以下方法测试其输出,则通常更直接。

代码语言:txt
复制
if some_command; then
    echo command returned true
else
    echo command returned some error
fi

或者将!用于否定

代码语言:txt
复制
if ! some_command; then
    echo command returned some error
else
    echo command returned true
fi

如果你只关心特定的错误代码,那么你需要检查手动$?

票数 0
EN

Stack Overflow用户

发布于 2018-08-02 16:09:22

请注意,exit codes != 0被用于报告错误。所以,最好这样做:

代码语言:txt
复制
retVal=$?
if [ $retVal -ne 0 ]; then
    echo "Error"
fi
exit $retVal

而不是:

代码语言:txt
复制
# will fail for error codes > 1
retVal=$?
if [ $retVal -eq 1 ]; then
    echo "Error"
fi
exit $retVal
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100001880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档