首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果命令失败,如何退出?

如果命令失败,如何退出?
EN

Stack Overflow用户
提问于 2010-09-29 22:32:38
回答 7查看 196.1K关注 0票数 269

我是shell脚本方面的新手。如果命令失败,我想打印一条消息并退出我的脚本。我试过了:

代码语言:javascript
复制
my_command && (echo 'my_command failed; exit)

但它不起作用。它继续执行脚本中这一行后面的指令。我使用的是Ubuntu和bash。

EN

回答 7

Stack Overflow用户

发布于 2010-09-30 00:05:43

其他答案已经很好地涵盖了直接问题,但您也可能对使用set -e感兴趣。这样,任何失败的命令(在特定上下文之外,如if测试)都将导致脚本中止。对于某些脚本,它非常有用。

票数 156
EN

Stack Overflow用户

发布于 2013-10-20 02:33:18

如果您希望脚本中所有命令都具有这种行为,只需添加

代码语言:javascript
复制
set -e 
set -o pipefail

在脚本的开头。这两个选项告诉bash解释器在命令返回非零退出代码时退出。(有关为什么需要pipefail的更多详细信息,请参阅http://petereisentraut.blogspot.com/2010/11/pipefail.html)

但是,这不允许您打印退出消息。

票数 88
EN

Stack Overflow用户

发布于 2010-09-29 22:41:00

还要注意,每个命令的退出状态都存储在外壳变量$中,您可以在运行命令后立即检查该变量。非零状态表示故障:

代码语言:javascript
复制
my_command
if [ $? -eq 0 ]
then
    echo "it worked"
else
    echo "it failed"
fi
票数 77
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3822621

复制
相关文章

相似问题

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