[英]getopts in bash programming
当我使用'while getopts d:n:OPTION'时-我怎么知道我只有无效的选项,如果是,那后面还有一个参数?
您知道您的选项无效,因为返回值为'?'。
或者:
要么:
“或”选项中的启发式方法是不完善的。 通过选项捆绑,我可以写:
command -xbf/fidget
'xf:'
,则'b'为无效选项。 'xbf:'
,则有效选项'b'之后将有一个选项'f'和选项参数'/ fidget'。 'xb:f:
',则'b'的选项参数将是'f / fidget'。 我认为“任何一种”态度都是正确的-您无法分辨。
来自名为“ rcsunco”的命令的代码片段-取消RCS检出(并在我勉强离开SCCS时编写):
remove=yes
keep=no
get=no
quiet=
while getopts gknqrV opt
do
case $opt in
V) echo "`basename $0 .sh`: RCSUNCO Version $Revision: 2.1 $ ($Date: 2002/08/03 07:41:00 $)" |
rcsmunger
exit 0;;
g) get=yes;;
k) keep=yes;;
n) remove=no;;
q) quiet=-q;;
r) remove=yes;;
*) echo "Usage: `basename $0 .sh` [-{n|g}][-{r|k}] file [...]" 1>&2
exit 1;;
esac
done
shift $(($OPTIND-1))
这些天来,我在“案例”中使用了“平衡括号”表示法:
(q) quiet=-q;;
还要注意,我没有明确测试返回哪个选项-我让所有的'*'案例都处理了。 我还观察到用法消息不完整(没有记录“ -V”或“ -q”),并且代码足够老,以至于我没有添加“ -h”作为帮助选项。 脚本“ rcsmunger”仅将“ $Revision 2.1 $
”替换$Revision 2.1 $
“ 2.1
”,更像SCCS用“ 2.1”替换“%I%”的方式。
无效的选项将带有问号?...如果有问号,则对命令行参数的IIRC处理将停止。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.