在C/C++语言中,系统库里提供了exit()函数,用来正常终止一个进程,并会将并将status & 0377的值返回给父进程。其函数原型如下:
#include
void exit(int status);
在Shell脚本中,也提供了名为exit的命令。该命令用来结束一个脚本,并返回一个值(退出状态码),该值会被传递给脚本的父进程。
exit命令的使用语法如下:
exit status
exit后面的status是可选参数。 如果不填写status,则该status默认为exit命令的前一个命名执行的退出状态码。Shell中的每一个命令都会使用一个退出状态码,其值范围是0~255。同样,脚本中的函数和脚本本身也会返回一个退出状态码。在脚本或脚本函数中最后一个执行的命令决定了函数的退出状态码值。
exit status把退出状态码传递给Shell。注意,其中status的值范围0~255,并且必须是一个整数。
该示例脚本中,在func函数内部会执行exit命令,并返回退出状态码1给Shell,结束当前的脚本文件执行。因此黄色线框内部的打印不会输出。

我们可以在Shell终端打印该脚本的退出状态码,其值为1。

在前一节中有提到过,Shell退出状态码值范围是0~255。一般情况下,退出状态码0表示成功,1~255表示失败。下面是Linux下常见退出状态码以及对应错误信息。

exit命令使用过程中,需注意以下几种情形:
exit不带参数exit命令来结束,则此脚本的退出状态码等于该脚本中最后一个被执行的命令的状态来决定。比如:

不带参数的exit命令,效果等价于 exit $?,也等价于脚步结尾不写exit命令。
exit 带显示参数$? 命令保存脚本文件中最后所执行的命令的退出状态码。