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

Gab*_*vay 2 bash exit-code

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

$ my_script --help; echo $?
Usage ...
0
Run Code Online (Sandbox Code Playgroud)

要么

$ my_script --help; echo $?
Usage ...
1
Run Code Online (Sandbox Code Playgroud)

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

  • 像:( grep在MacOS上)的工具,man返回一个非零退出代码.
  • 工具,如:bash,sh,vim返回0作为退出代码.

PSk*_*cik 5

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

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

我认为这些都是良好而合理的做法,而且我见过的大多数优秀的CLI工具都遵循它们.(这包括我的Linux Mint's grep,man以及抱怨没有帮助选项ping的警告ping,但它与此建议的第2段一致.)