shell 中getopts的疑问
getopts用于解析shell的命令行参数。
有如下代码:
- #!/bin/bash
- CMD_OPT="o:"
- while getopts "$CMD_OPT" C
- do
- case $C in
- o)
- echo "ooooooooooooo"
- ;;
- \?)
- echo "******************"
- exit 1
- ;;
- esac
- done
复制代码如果运行的时候,输入任何一个字符串(不是以-开头),为什么没有提示任何错误
#./test.sh abcd
而如果是以-开头的,则会提示错误
#./test.sh -abcd
./test.sh: illegal option -- a
******************
这是不是getopts的BUG? 有没有办法可以检查这样的非法出入。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这个链接可以解答你的疑惑
http://bbs.chinaunix.net/thread-1823335-1-1.html
你程序都没abcd这些选项,当然报illegal option -- a
回复 3# chaogooler8888
我是说如果执行#./test.sh abcd,为什么不报错
感觉使用getopts存在很多问题啊
试试 : 前面一个冒号,后面一个冒号
还有你好像也没有使用 -o 选项阿..