bash 脚本应该使用 --help 参数调用 return 0 还是非零退出代码?

Should bash scripts called with --help argument return 0 or not-zero exit code?

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

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

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

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

除非出现 IO 错误,否则输出应为 stdout,脚本应为 return 0。 (用户请求帮助屏幕,您交付。操作成功。)

如果您输出相同的帮助屏幕作为对不正确使用的响应,则将其输出到 stderr 并失败(=以非零值退出)。 (用户试图做某事,但他们做错了——操作失败,你通过 stderr 给他们一个提示(因为在 stdout,他们很可能期待其他事情)关于如何他们可能会做对。)

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

0 是正确的 return 代码,因为命令运行成功,这就是 return 代码 0.

的含义