在shell中运行的每个命令都使用了退出状态码告诉shell它已经运行完毕。退出状态码是一个0~255的整数值,在命令运行时由命令传给shell。可以捕获这个值并在脚本中使用。
查看退出状态码
Linux提供了一个专门的变量
?
来
保
存
上
个
已
执
行
的
退
出
状
态
码
。
对
于
需
要
进
行
检
查
的
命
令
,
必
须
在
运
行
完
毕
后
立
刻
查
看
?来保存上个已执行的退出状态码。对于需要进行检查的命令,必须在运行完毕后立刻查看
?来保存上个已执行的退出状态码。对于需要进行检查的命令,必须在运行完毕后立刻查看?变量。它的值会变成由shell所执行的最后一条命令的退出码。
Linux退出状态码
状态码 | 描述 |
---|---|
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
128 | 无效的退出参数 |
128+x | 与Linux信号x相关的严重错误 |
130 | 通过Ctrl +C终止的命令 |
255 | 正常范围之外的退出状态码 |
按照惯例,一个成功结束的命令的退出码状态码是0。如果一个命令结束时有错误,退出状态码就是一个正整数值。例如下面的随便输入命令:
提示信息:位找到命令。通过echo $?查看。无效的命令会返回一个退出状态码127。
例如创建一个test1.sh,没有给权限(chmod u+n test1.sh) 。退出码状态126表明用户没有执行命令的正确权限。
另一个会碰到的常见的错误是给某个命令提供无效的参数。
这会产生一般性的退出码1,表明在命令中发生了未知的错误。
exit 命令
exit命令同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。
状态值0代表执行成功,其他值代表执行失败。
总结
Linux提供 ? 特 殊 变 量 来 保 存 最 后 一 条 命 令 执 行 结 束 的 退 出 状 态 。 执 行 完 一 条 命 令 后 , 立 即 执 行 e c h o ? 特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo ?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo?,可以查看最后一条命令的退出状态值。
退出状态码是一个0~255的数值,表明命令是否成功执行。一个成功结束的退出状态码是0。如果一个命令结束时有错误,退出状态码就是一个正数值。
参考:Linux命令行与shell脚本编程大全