Shell中的特殊变量$?-查看上一条Shell命令的退出状态码(exit status)

Shell中的每个命令在完成时返回一个0到255的退出状态码,用于指示命令执行成功与否。$?变量用于存储上一个命令的退出状态码,通常用于脚本中进行错误检查。理解这些状态码对于编写可靠的shell脚本至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell 中运行的每个命令都使用退出状态码(exit status)来告诉shell 它完成了处理。退出状态码是一个 0 ~ 255 之间的整数值,在命令结束运行时由命令传给shell。你可以捕捉这个值并在脚本中使用。

1. 查看退出状态码

Linux 使用了$? 专属变脸来保存上个执行的命令的退出状态码。你必须在要查看的命令之后马上查看或使用$?变量。它的值会变成shell中执行的最后一条命令的退出状态码,例如:

[root@ZX-DSI bin]# pwd

/usr/local/rss/bin

[root@ZX-DSI bin]# echo $?

0
或者:

A process is killed by SIGKILL
[root@ZX-DSI bin]# echo $?  
137        // 表示命令被信号 9 杀死,命令被信号1杀死 退出状态码是129

2. Linux 状态码的意义


0                   命令成功结束
1                    通用未知错误
2                    误用shell命令
126               命令不可执行
127               没找到命令
128               无效退出参数
128+x          Linux 信号x的严重错误
130            Linux 信号2 的严重错误,即命令通过SIGINT(Ctrl+C)终止
255               退出状态码越界

默认状态下,shell脚本会以脚本中的最后一个命令作为退出状态码。所以一般情况下,在shell脚本中以 exit 命令的值来指定shell命令的退出状态码。但是退出状态码的范围是 0 ~ 255, 退出值超出这个范围将会执行取模运算。例如通过exit 命令指定返回值为300,经过取模运算,那么退出状态码就为44.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值