Shell的返回码
Shell每一行脚本都有执行返回码,返回码0为成功,其他为失败.
Shell脚本的返回码0为成功,其他为失败。
可使用exit命令来设置返回码。函数可使用return设置可使用echo $? 来查看上一行命令的返回码,可使用exit命令来设置返回码。
exit函数只能使用0~255之间的值. 如果传-1的话接收到的就是255(unsigned值)。因为历史上子进程返回的是16bit的int,高8位就是程序退出的值(exit返回码)
典型退出状态码及其含义 | |
退出状态码 | 含义 |
0 | 命令运行成功 |
1 | 通知未知错误 |
2 | 误用shell命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
128 | 无效退出参数 |
128+x | linux信号x的严重错误 |
130 | 命令通过Ctrl+C终止 |
255 | 退出状态码越界 |
在Linux的内建Shell命令中, 很多都会遵守一个退出状态码的约定, 具体的值对应的意思:
Exit Code Number | Meaning | Example | Comments |
---|---|---|---|
1 | Catchall for general errors | let “var1 = 1/0″ | Miscellaneous errors, such as ”divide by zero” and other impermissible operations |
2 | Misuse of shell builtins (according to Bash documentation) | empty_function() {} | Seldom seen, usually defaults to exit code 1 |
126 | Command invoked cannot execute | Permission problem or command is not an executable | |
127 | “command not found” | illegal_command | Possible problem with $PATH or a typo |
128 | Invalid argument to exit | exit 3.14159 | exit takes only integer args in the range 0 – 255 (see first footnote) |
128+n | Fatal error signal ”n” | kill -9 $PPID of script | $? returns 137 (128 + 9) |
130 | Script terminated by Control-C | Control-C is fatal error signal 2, (130 = 128 + 2, see above) | |
255* | Exit status out of range | exit -1 | exit takes only integer args in the range 0 – 255 |