![Bash getopts 错误处理](https://linux22.com/image/228022/Bash%20getopts%20%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.png)
答案1
请参阅参考手册:
getopts
可以通过两种方式报告错误。如果第一个字符为可选字符串是冒号,则使用静默错误报告。在正常操作中,当遇到无效选项或缺少选项参数时,将打印诊断消息。如果看到无效选项,则
getopts
放入?
姓名如果不是静默,则打印一条错误消息并取消设置OPTARG
。如果getopts
是静默,则将找到的选项字符放入其中OPTARG
,并且不打印任何诊断消息。
就你而言,可选字符串是vcn
,因此getopts
本身会打印一条错误消息。要禁用它,请改用getopts :vcn
。
另外,您的:
echo "Invalid Option" && exit 1
应该:
echo>&2 "Invalid Option"; exit 1
那是:
- 错误应该转到标准错误(文件描述符 2),而不是标准输出。
- 而且你应该无条件退出,而不仅仅是
echo
成功。