Chinaunix

标题: 谁有Shell返回值代码列表啊? [打印本页]

作者: chenyimo    时间: 2009-10-27 09:39
标题: 谁有Shell返回值代码列表啊?
大家好,谁有Shell   echo $? 返回值1~127的各个值的含义列表啊?谢谢了
作者: haimming    时间: 2009-10-27 09:42
没有统一规定的,是程序自己定的
http://bbs.chinaunix.net/viewthread.php?tid=1574073

[ 本帖最后由 haimming 于 2009-10-27 09:45 编辑 ]
作者: chenyimo    时间: 2009-10-27 09:47
不是吧,比如,126    文件不可执行     127    命令没有找到
难道这个返回值没有固定含义?
作者: cxfcxf    时间: 2009-10-27 09:57
exit num....不是随便定的么
作者: ruochen    时间: 2009-10-27 10:08
默认0是正确的

其余的是上次命令不正确的执行吧
作者: haimming    时间: 2009-10-27 10:10
那看看这个吧
http://tldp.org/LDP/abs/html/exitcodes.html
Appendix D. Exit Codes With Special Meanings

Table D-1. "Reserved" Exit Codes
Exit Code Number        Meaning        Example        Comments
1        Catchall for general errors        let "var1 = 1/0"        Miscellaneous errors, such as "divide by zero"
2        Misuse of shell builtins (according to Bash documentation)                 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"                 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 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

According to the above table, exit codes 1 - 2, 126 - 165, and 255 [1] have special meanings, and should therefore be avoided for user-specified exit parameters. Ending a script with exit 127 would certainly cause confusion when troubleshooting (is the error code a "command not found" or a user-defined one?). However, many scripts use an exit 1 as a general bailout upon error. Since exit code 1 signifies so many possible errors, this probably would not be helpful in debugging.

There has been an attempt to systematize exit status numbers (see /usr/include/sysexits.h), but this is intended for C and C++ programmers. A similar standard for scripting might be appropriate. The author of this document proposes restricting user-defined exit codes to the range 64 - 113 (in addition to 0, for success), to conform with the C/C++ standard. This would allot 50 valid codes, and make troubleshooting scripts more straightforward.

All user-defined exit codes in the accompanying examples to this document now conform to this standard, except where overriding circumstances exist, as in Example 9-2.

Note        

Issuing a $? from the command line after a shell script exits gives results consistent with the table above only from the Bash or sh prompt. Running the C-shell or tcsh may give different values in some cases.
Notes
[1]        

Out of range exit values can result in unexpected exit codes. An exit value greater than 255 returns an exit code modulo 256. For example, exit 3809 gives an exit code of 225 (3809 % 256 = 225).


不知列表在帖子里怎么排
看链接会清楚些

[ 本帖最后由 haimming 于 2009-10-27 10:12 编辑 ]
作者: chenyimo    时间: 2009-10-27 10:55
感谢楼上的:wink:




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2