在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
带显示参数$? 命令保存脚本文件中最后所执行的命令的退出状态码。