对于 *NIX 系统而言,每一条命令,不管是内置的,SHELL 函数还是外置的,当它退出时,都 会返回一个小整数给引用它的程序,这就是程序退出状态 ( exit status ).
一般来讲,退出状态 0 表示正常执行,没有遭遇任何问题。其他非零的状态码均表示失败。
在 shell 中,可以使用 $? 来访问最后一个程序的退出状态。
下面是 POSIX 的结束状态:
退出状态码 | 含义 |
0 | 命令成功退出 |
> 0 | 在重定向或者单词展开期间(~、变量、命令、算术展开以及单词切割)失败。 |
1 – 125 | 命令不成功退出。特定的退出值的含义,有各个命令自行定义。 |
126 | 命令找到了,但是文件无法执行。 |
127 | 命令没有找到 |
> 128 | 命令因收到信号而死亡。 |
POSIX 没有定义 128 的状态码,仅要求它表示某种错误。因为只有低位的 8 个位会返回给父进程,因此,所有大于 255 的退出状态都会被对 256 取模,然后将其结果作为实际的 exit status code.
在 shell 脚本中,可以使用 exit integer_value 这种方式声明退出状态。如果没有显式地声明,则会以最后一个程序的退出状态作为当前脚本的退出状态。也可以使用 exit $? 来表示。