调用--help参数的Bash脚本应返回0还是非0退出码?
当Bash脚本收到
--help参数时,该返回什么退出码? 这事儿其实在脚本开发圈里一直有点小争议,不同工具生态的实践路子不一样,咱们来拆解两种选项的依据:
选项1:返回退出码0
这是更符合直观逻辑的主流实践,支持的论据有:
- 任务成功的定义:用户主动输入
--help请求帮助信息,脚本成功完成了“输出帮助内容”这个任务,没有发生任何错误,完全符合退出码0代表“执行成功”的基本定义。像bash、sh、vim这类常用工具都是这么做的,比如执行:$ bash --help; echo $? # 输出帮助内容... 0 - 参数合法性:
--help属于脚本预先定义的合法参数,不是用户输入错误,脚本正常响应合法请求,理应返回成功状态码。
选项2:返回非0退出码
这种实践多见于部分Unix/Linux子生态,支持的论据有:
- 传统工具的行为惯性:比如macOS下的
grep、man工具,在收到--help参数输出帮助后会返回非0退出码。这类工具的设计逻辑是:用户运行工具的“核心目的”是执行其主要功能(比如grep的文本匹配、man的手册查询),而输出帮助只是一种“辅助提示”,并非完成核心任务,所以用非0表示“未执行核心功能”。 - 调用场景的区分需求:如果你的脚本会被其他脚本调用,返回非0可以让调用者明确区分“脚本执行了核心业务逻辑”和“脚本输出了帮助信息”两种状态,方便后续流程判断。
个人建议
优先选择返回0,因为它更符合普通用户的直观预期——用户主动请求帮助,脚本完美响应了这个需求,没有理由返回错误码。但如果你的脚本需要和某个特定工具生态的行为对齐(比如要和macOS下的grep这类工具保持一致),也可以考虑返回非0。
内容的提问来源于stack exchange,提问作者Gabriel Petrovay
相关产品推荐
相关产品推荐

