发布日期:2023-10-01 浏览次数:7

揭开 Linux 中退出码的神秘面纱。了解什么是退出码,以及为什么和如何使用它们。
退出码(退出状态)可以告诉我们最后一次执行的命令的状态。在命令结束以后,我们可以知道命令是成功完成的还是以错误结束的。
其基本思想是,程序返回退出代码0时表示执行成功,没有问题。代码1或0以外的任何代码都被视为不成功。
退出码除了 0 和 1 外还有很多值,我将在本文介绍它们。
我们来快速了解一下 Linux Shell 中的主要退出码:
| 退出码 | 解释 |
|---|---|
0 | 命令成功执行 |
1 | 通用错误代码 |
2 | 命令(或参数)使用不当 |
126 | 权限被拒绝(或)无法执行 |
127 | 未找到命令,或PATH错误 |
128+n | 命令被信号从外部终止,或遇到致命错误 |
130 | 通过Ctrl+C或SIGINT终止(终止代码 2 或键盘中断) |
143 | 通过SIGTERM终止(默认终止) |
255/* | 退出码超过了 0-255 的范围,因此重新计算(LCTT 译注:超过 255 后,用退出码对 256 取模) |
?
130(SIGINT或^C)和143(SIGTERM)等终止信号是非常典型的,它们属于128+n信号,其中n代表终止码。
在简单了解了退出码之后,我们来看看它们的用法。
前一个命令执行的退出码存储在 特殊变量 $? 中。你可以通过运行以下命令来获取:
echo $?我们在所有演示中都将使用它来获取退出代码。
请注意,exit命令支持以带着前一条命令相同的退出码退出。
退出码0表示命令执行无误,这是完成命令的理想状态。
例如,我们运行这样一条基本命令
neofetch echo $?