我在他们的网站上关注IBM的例子:
(清单#5)http://www.ibm.com/developerworks/library/l-bash-parameters/index.html
#!/bin/bash
echo "OPTIND starts at $OPTIND"
while getopts ":pq:" optname
do
case "$optname" in
"p")
echo "Option $optname is specified"
;;
"q")
echo "Option $optname has value $OPTARG"
;;
"?")
echo "Unknown option $OPTARG"
;;
":")
echo "No argument value for option $OPTARG"
;;
*)
# Should not occur
echo "Unknown error while processing options"
;;
esac
echo "OPTIND is now $OPTIND"
done
Run Code Online (Sandbox Code Playgroud)
我想要的是有一个名字超过1个字母的选项.即-pppp和-qqqq而不是-p和-q.
我写了我的程序并实现-help给了我一个问题......
对于传统的shell命令,-help相当于-h -e -l -p,所以如果用getopts它解析"-help",它会将它视为四个独立的参数.因此,除非您想自己进行所有解析,否则不能使用前缀为单个连字符的多字母参数.按照惯例,不仅仅是单个字符(也就是"长选项")的选项前面有两个破折号,而是使事情明确无误.
帮助文本的惯例是支持-h和--help.
不幸的是,bash的getopts内置版不支持长选项,但是在所有常见的Linux发行版中都有一个单独的getopt实用程序,可以使用它来支持长选项.