设置退出状态代码的最佳做法

问题描述 投票:4回答:2

在实现我自己的脚本时,最好的做法是针对不同的故障情况退出不同的退出代码吗? 或者我应该只返回退出代码1表示失败,0表示成功提供stderr的原因?

bash shell exit-code
2个回答
2
投票

向stderr提供描述性错误消息对于交互式用户来说很好,但是如果您希望其他脚本/程序使用您的脚本,则应该为不同的故障提供独特的错误代码,因此调用脚本可以做出明智的决定。如何处理失败。

如果调用程序不希望以不同的方式处理不同的故障,它总是可以检查返回代码> 0 - 但不要假设是这种情况。


1
投票

有一些建议,请参阅维基百科,但不是规范性的,除了0成功之一:

http://en.wikipedia.org/wiki/Exit_status#POSIX

*在Unix和其他POSIX兼容系统中,等待系统调用将类型为int的状态值设置为具有各种类型的子终止信息的位域。 如果孩子通过退出终止(由WIFEXITED宏确定;通常的选择是它死于未被捕获的信号),SUS指定可以使用WEXITSTATUS从状态值中检索退出状态的低8位wait.h中的宏; [6] [7]当使用POSIX waitid系统调用(添加POSIX-2001)时,状态的范围不再受限制,可以在整数范围内。

POSIX兼容系统通常使用零约定成功而非零错误。[8] 关于各种错误代码的相对含义,已经制定了一些公约; 例如,GNU建议高位设置的代码保留用于严重错误,[3]并且FreeBSD记录了一组广泛的首选解释。[9] 在sysexits.h中定义了15个状态代码64到78的含义。 这些历史源自sendmail和其他邮件传输代理,但它们已经在许多其他程序中使用。[10] *

© www.soinside.com 2019 - 2024. All rights reserved.