使用echo $? 查看命令成功执行的原理

5.07K 浏览开发笔记

使用echo $? 查看命令成功执行的原理

在进行源代码编译,或者执行命令无法确认所执行的命令是否成功执行的情况下,我们都会使用 echo $? 来进行测试。

如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。

之前在学习的时候只是机械的接受了这个事实,没有考虑背后的原理。

这二天在查看资料的时候突然看到了“进程生命周期”的知识:

当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。

也就是说我们在执行 echo $? 时反回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。

更多linux资料请查看:http://www.apelearn.com/bbs/?fromuid=4297

0

状态码含义

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

0