在 shell 中,每个命令都会返回一个状态返回值。成功的命令返回 0
,而不成功的命令返回非零值。非零值通常都被解释成一个错误码。
在 shell 中$?
是一个特殊变量,它所引用的值就是上一条命令的执行状态返回值。
- 在 shell 的函数执行后,
$?
返回的是函数执行的最后一条命令的状态返回值 - 在 shell 脚本执行之后,
$?
返回的是脚本执行的最后一条命令的状态返回值
在脚本中,exit n
命令将会把 n
退出状态码传递给父 shell 并结束整个脚本。n
必须是十进制数, 范围是0 - 255
。以下是常见的状态码及意义
- 0 运行成功
- 2 权限拒绝
- 1~125 表示运行失败,脚本命令、系统命令错误或参数传递错误
- 126 找到命令了,但是无法执行
- 127 要运行的命令不存在
- 128 命令被系统强制结束
1 | [user1@study ~]$ cat exitstatus.sh |
执行上面的 exitstatus.sh
查看各种退出状态
1 | [user1@study ~]$ bash exitstatus.sh |