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 用0~255 之间的数字表示,这样实现脚本主动控制返回值。

POSIX规定的几种退出状态


退出状态


0


运行成功


1~125


各种运行失败


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则会直接退出进程。

时间: 2024-10-06 01:10:02

exit-shell退出状态的相关文章

shell退出状态

PS:今天加了个运维群,你好哥的..我了个去,还要回答问题..然后 然后感觉还是吧这些状态给记录下来吧. 退出状态及其含义 状态值                                       含义 0                                 表示运行成功, 1-125                           表示运行失败,脚本命令.系统命令错误或参数传递错误 126                              找到了命令但无法执行

Linux Shell退出状态码

状态码 描述 0 命令成功结束 1 通用未知错误 2 误用Shell命令 126 命令不可执行 127 没找到命令 128 无效退出参数 128+x Linux信号x的严重错误 130 命令通过Ctrl+C控制码越界 255 退出码越界 状态码访问: $echo $?

Shell中退出状态码exit

shell中运行的每个命令都使用退出状态码(exit status)来告诉shell它完成了处理.退出状态码是一个0~255之间的整数值,在命令结束时由命令传回shell. 1 .查看退出状态码 Linux提供了$?专属变量保存上一个执行的命令的退出状态码.你可以在你运行一个命令之后查看(echo $?). 几个典型的退出状态码及其意义: 0----------------命令运行成功 1----------------通知未知错误 2----------------误用shell命令 126-

linux退出状态码及exit命令

Linux提供了一个专门的变量$?来保存上个已执行命令的退出状态码.对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用$?变量.它的值会变成由shell所执行的最后一条命令的退出状态码: [[email protected] test]# date 2017年 07月 19日 星期三 16:32:51 CST [[email protected] test]# echo $? 0 按照惯例,一个成功结束的命令的退出状态码是0.如果一个命令结束时有错误,退出状态码就是一个正数值(1-255)

shell的退出状态码

shell中运行的每个命令都使用退出状态码(exit status).退出状态码是一个0~255的整数,在命令结束运行时有命令传给shell. 查看退出状态码 Linux提供了一个专门的变量 $? 来保存上一个已执行命令的退出状态码.对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用 $? 变量.它的值会变成有shell所执行的最后一条命令的退出状态码. 一个成功结束的命令的退出状态码是0.Linux错误退出状态码没有什么标准可循,但有一些可用的参考: 状态码 描述 0 命令成功结束 1

bash自定义退出状态码exit

exit用来结束一个脚本,脚本中一旦遇到exit命令,脚本会立即终止:终止退出状态取决于exit命令后面的数字: exit [n]:自定义退出状态码: 举例说明. 1.未给脚本指定退出状态码,整个脚本的退出状态码取决于脚本中执行的最后一条命令的状态码: 2.给脚本指定退出状态码,整个脚本的退出状态码取决于指定的退出状态码:

bash之流程控制for循环及bash命令退出和退出状态码

一.for循环定义: 将一段代码反复执行:----->进入条件;------> 退出条件; 二.语法格式: for 变量名 in LIST do statement1 ... done for VAR in LIST; do statement1; statement2; ...; done 三.LIST:列表 定义:包含至少一个元素的字符串集合: LIST的生成方法: (1) 直接给出: (2) 数值列表: (a) {start..end},例如:{1..10} (b) seq [start

shell退出,返回小结

shell中常用的返回有:exit,breakm,return exit: 其实每条命令执行完成后,都要返回一个执行状态的! 如果执行成功,就返回 0 如果执行不超过,返回非零! 举例应用:用在shell脚本中做真假判断, 如果前一句执行OK,那shell接着执行下一条命令: 如果前面错误,返回值非零,那直接退出shell: break: 仅能用在shell内部循环,如if ...then..else ..fi等 return: 这个用途非常大,从函数中返回值 echo: 执行echo "xxx

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码(6)

条件测试 判断某需求是否满足,需要由测试机制来实现. 根据命令的执行状态结果,表达不同的测试条件 1.根据id命令的执行状态结果,判断用户是否存在 [[email protected] ~]# id root uid=0(root) gid=0(root) groups=0(root) [[email protected] ~]# echo $? 0 [[email protected] ~]# id help id: help: no such user [[email protected]