← 全部文章

技术与生活 / 一篇记录

让短选项解析回归 getopts

手写位置参数判断容易漏掉组合选项,getopts 适合短选项接口。

参数数量变多后,手写 shift 与位置判断容易漏掉选项取值、未知字符和错误状态。getopts 提供基础解析循环,让脚本能把注意力放回实际业务。

操作与观察

以下示例使用 Bash,请在独立测试目录中理解输入、输出和退出码。

while getopts 'n:' opt; do case "$opt" in n) printf '%s\n' "$OPTARG";; *) exit 2;; esac; done

用 -n demo 测试参数,再测试遗漏值的情况。

逐项测试正确选项、没有值的选项和未知选项。解析完成后若还要处理位置参数,应根据 OPTIND 移动参数,而不是假定前两个参数已经用完。

同一选项是否允许重复出现,最好事先定义。覆盖前值、累积多个值或直接拒绝都可以,但应有清晰规则。解析后把最终选项集中展示为不含秘密的摘要,便于排查调用错误。

别遗漏这条边界

getopts 不直接提供通用的长选项解析能力。

参考:Shell 文档。

搜索文章

输入关键词,找回一篇记录。