在实现我自己的脚本时,最好的做法是针对不同的故障情况退出不同的退出代码吗?或者我应该只返回退出代码1表示失败,0表示成功提供stderr的原因?
答案 0 :(得分:2)
向stderr提供描述性错误消息对于交互式用户来说很好,但如果您希望其他脚本/程序使用您的脚本,则应该为不同的故障提供独特的错误代码,因此调用脚本可以创建一个知情决定如何处理失败。
如果调用程序不希望以不同的方式处理不同的故障,则可以始终针对> 0
检查返回代码 - 但不要认为是这种情况。
答案 1 :(得分: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] *