我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
我收到一条消息,说脚本xyz.py返回退出代码0。这是什么意思?
Python中的退出码是什么意思?有多少个?哪些是重要的?
当前回答
答案是“取决于退出码0的含义”。
然而,在大多数情况下,这意味着“一切都很好”。
我喜欢POSIX:
因此,在shell中,我键入:
python script.py && echo 'OK' || echo 'Not OK'
如果我的Python脚本调用sys.exit(0), shell返回'OK'
如果我的Python脚本调用sys.exit(1)(或任何非零整数),shell返回'Not OK'。
巧妙地使用shell是您的工作,并阅读脚本的文档(或源代码)以了解退出代码的含义。
其他回答
下面是Unix退出代码0 -成功/ OK, 1 -不成功/错误。你可以简单地使用exit(0)或exit(1)调用而不导入sys module。
退出代码0通常表示“这里没有问题”。但是,如果脚本的程序员没有遵循约定,您可能需要参考源代码来了解它的含义。通常非零值作为错误代码返回。
退出码只有脚本作者指定的意义。Unix的传统是,退出码0表示“成功”,否则就是失败。要确定给定脚本的退出码意味着什么,唯一的方法是检查脚本本身。
操作系统命令有退出码。请查看Linux退出代码以了解有关这方面的一些材料。shell使用退出代码来决定程序是否工作、是否存在问题或是否失败。有一些努力来创建标准的(或者至少是常用的)退出码。请参阅这篇高级Shell脚本文章。
来自sys.exit的文档:
The optional argument arg can be an integer giving the exit status (defaulting to zero), or another type of object. If it is an integer, zero is considered “successful termination” and any nonzero value is considered “abnormal termination” by shells and the like. Most systems require it to be in the range 0-127, and produce undefined results otherwise. Some systems have a convention for assigning specific meanings to specific exit codes, but these are generally underdeveloped; Unix programs generally use 2 for command line syntax errors and 1 for all other kind of errors.
一个使用退出码的例子是在shell脚本中。在Bash中,您可以检查特殊变量$?对于最后一个退出状态:
me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43
就我个人而言,我尝试使用在/usr/include/asm-generic/errno.h(在Linux系统上)中找到的退出码,但我不知道这样做是否正确。