为什么有些人出错时退出 -1 而不是退出 1?
Why do some people exit -1 rather than exit 1 on error?
我正在编写一个相当简单的 bash 脚本;如果我检测到一个错误(不是来自其他进程的错误退出状态),我想以一个指示错误的退出状态退出(不太具体)。
看来我应该做 exit 1
(例如,根据 the TLDP Advanced Bash Scripting Guide, and the C Standard Library's stdlib.h
header);但是我注意到很多人 exit -1
。这是为什么?
TLDP 的 ABS 的有效性值得怀疑(因为它经常使用,没有评论,低于标准的做法)所以我不会把它作为正确性的特殊堡垒。
所述有效命令 return 代码在 0
和 255
之间,其中 0
为 "success"。所以是的,1
是一个完全有效(且常见)的错误代码。
显然我不能确定为什么其他人会那样做,但我对这个话题有两个想法。
上下文切换失败(可能与缺乏领域知识相结合)。
在许多语言中,函数中 -1
的 return 值是一个完全有效的值,并且从所有可能(假设)通常为 return 的正值中脱颖而出编辑
因此尝试将该模式(作者随着时间的推移逐渐掌握)扩展到 shell script/etc。对他们来说是一件合理的事情。特别是如果他们没有领域知识来意识到有效的 return 代码在 0
255
.
之间
尝试从正常退出情况(可能成功也可能不成功退出)中获得这些错误退出行 "stand out",以试图在视觉上区分一组极不可能的情况或其他异常退出案例。
实际上,-1
的退出确实有效,它不会让您获得 -1
的 return 代码,而是让您获得 return 的代码 255
。 (在你的 shell 中尝试 (exit -1); echo $?
看看。)所以这并不是一件完全不合理的事情(尽管在混淆退出代码方面令人困惑和同谋)。
我正在编写一个相当简单的 bash 脚本;如果我检测到一个错误(不是来自其他进程的错误退出状态),我想以一个指示错误的退出状态退出(不太具体)。
看来我应该做 exit 1
(例如,根据 the TLDP Advanced Bash Scripting Guide, and the C Standard Library's stdlib.h
header);但是我注意到很多人 exit -1
。这是为什么?
TLDP 的 ABS 的有效性值得怀疑(因为它经常使用,没有评论,低于标准的做法)所以我不会把它作为正确性的特殊堡垒。
所述有效命令 return 代码在 0
和 255
之间,其中 0
为 "success"。所以是的,1
是一个完全有效(且常见)的错误代码。
显然我不能确定为什么其他人会那样做,但我对这个话题有两个想法。
上下文切换失败(可能与缺乏领域知识相结合)。
在许多语言中,函数中
-1
的 return 值是一个完全有效的值,并且从所有可能(假设)通常为 return 的正值中脱颖而出编辑因此尝试将该模式(作者随着时间的推移逐渐掌握)扩展到 shell script/etc。对他们来说是一件合理的事情。特别是如果他们没有领域知识来意识到有效的 return 代码在
0
255
. 之间
尝试从正常退出情况(可能成功也可能不成功退出)中获得这些错误退出行 "stand out",以试图在视觉上区分一组极不可能的情况或其他异常退出案例。
实际上,
-1
的退出确实有效,它不会让您获得-1
的 return 代码,而是让您获得 return 的代码255
。 (在你的 shell 中尝试(exit -1); echo $?
看看。)所以这并不是一件完全不合理的事情(尽管在混淆退出代码方面令人困惑和同谋)。