exit-shell退出状态

1. intruduction

exit 使shell(脚本)以指定状态值退出, 不带参数执行exit,shell或脚本以最后执行命令的状态值退出。 shell退出前, trap会捕猎EXIT信号。0表示执行成功,0值表执行失败。它经常用于判断语句和循环语句来控制程序和表达式的流程。

exit 使得编写脚本时可以自行设置退出时的状态值,使用$?引用,特定的退出状态值一般也会定义特定的退出含义。也可以用test来检查表达式的退出状态。

bash 所有builtin 命令都会在成功时返回状态0,失败时返回非0,所以它们可以用于条件命令和命令list

 

 

exit status退出状态

执行某一函数,程序或命令后退出时,向父命令返回一个整数,这个称为退出状态。不带参数的exit,则退出状态为最后被执行命令的退出状态。父进程可以中可以用$?引用其值

判断语句和循环语句也会用到exit status内置命令来控制程序流程,用来返回给父进程一个status值且脚本退出,且返回值保存在$?中, status 0255 之间的数字表示,这样实现脚本主动控制返回值。

 

POSIX规定的几种退出状态

退出状态

 

0

运行成功

1125

各种运行失败

126

找到命令,但无法执行

127

未找到运行的命令

>128

命令被系统强行结束

  

2. sysopsis

exit [status value]

status value  0~255 值保存在?变量中

  

3. eg

exit 退出shell,不改变$?的值

exit 1 退出shell, 且返回1

 

4. 比较return

exit是一个系统调用,用于在程序运行的过程中随时结束进程,它会删除进程占用的内存空间,并将status是返回给父进程,这个status通常用于标识程序的一些运行信息。

 

return是语言级别的一个关键字,它表示调用堆栈的返回,用于带一个status从函数退出。return不带参数时,则会返回函数体中最后一个命令的返回值。

return 也可以用于. (source) 方式(子shell)执行脚本时的返回,也可以返回指定的status 或者脚本中最后一个命令的exit status.

return 不用于函数体,也没有以.(source)方式执行脚本时,则会报错。

return会触发trap

 

所以正确的用法是将return 用于函数的返回,exit用于进程的退出。比如如果主函数调用子函数,在子函数里使用return会回到主函数中,但在子函数中exit则会直接退出进程。

 

本文出自 “Adelphos” 博客,请务必保留此出处http://adelphos.blog.51cto.com/2363901/1636235

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。