天天看点

Linux Shell学习笔记:exit退出状态代码

inux提供$?特殊变量来保存最后一条命令执行结束的退出状态。执行完一条命令后,立即执行echo$?,可以查看最后一条命令的退出状态值。

正常的情况下,命令成功执行完成的退出状态是0,如果非0,则命令执行有错。

该命令可以用于检查命令是否正确执行,比如在解压包的时候,检查解压包是否成功十分有效。

自定义退出状态码,可以在脚本中定义自己的退出状态代码,然后使用echo $?检查。

退出状态码最高是255,一般自定义的代码值为0~255,如果超出255,则返回该数值被256除了之后的余数。

退出状态代码:

0 命令成功完成

1通常的未知错误

2误用shell命令

126命令无法执行

127没有找到命令

128无效的退出参数

128+x使用Linux信号x的致命错误。

130使用Ctrl-C终止的命令

255规范外的退出状态

ubuntu下测试结果如下

[email protected]:/home/python$ date

2013年 11月 14日 星期四 19:12:45 CST

[email protected]:/home/python$ echo $?

0

[email protected]:/home/python$ kkllk

kkllk: command not found

[email protected]:/home/python$ echo $?

127

[email protected]:/home/python$ ls

hello.py hello.py~

[email protected]:/home/python$ vim a.c

[email protected]:/home/python$ ls

hello.py hello.py~

[email protected]:/home/python$ gedit a.c

[email protected]:/home/python$ ./hello.py

bash: ./hello.py: 权限不够

[email protected]:/home/python$ echo $?

126

[email protected]:/home/python$ date %t

date: 无效的日期"%t"

[email protected]:/home/python$ echo $?

1

[email protected]:/home/python$
           
[email protected]:~# ls -sail test

790207 4 -rwxr--r-- 1 root root 30 11月 14 19:25 test

[email protected]:~# ./test

[email protected]:~# echo $?

44

[email protected]:~# cat test

#!/bin/bash

var=300

exit $var

[email protected]:~#
           

继续阅读