是否应该使用--help参数调用的bash脚本返回0或不为零退出代码?

时间:2018-05-28 11:30:17

标签: bash exit-code

编写一个bash脚本,在使用--help参数调用时显示用法信息,建议退出/退出脚本的退出代码是什么?

$ my_script --help; echo $?
Usage ...
0

$ my_script --help; echo $?
Usage ...
1

如果有不同的意见,一个或其他选项的论据是什么?

  • 工具如:grep(在MacOS上),man返回非零退出代码。
  • 以下工具:bashshvim返回0作为退出代码。

2 个答案:

答案 0 :(得分:5)

输出应转到stdout,除非出现IO错误,否则脚本应返回0。 (用户请求帮助屏幕并且您已交付。操作成功。)

如果输出相同的帮助屏幕作为对错误使用的响应,则将其输出到stderr并失败(=以非零退出)。 (用户尝试做某事但他们做错了 - 操作失败了,你通过stderr给他们一个提示(因为在stdout,他们可能会期待别的东西)如何正确地做到这一点。)

我认为这些是良好而合理的做法,而且我见过的大多数优秀的CLI工具都遵循它们。 (这包括我的Linux Mint' grepmanping,但需要注意的是ping抱怨没有帮助选项,但它确实如此与此建议的第2段一致。)

答案 1 :(得分:1)

零是正确的返回码,因为命令运行成功,这是返回码0的含义。