Shell内建命令之getopts
参考博客:点击打开链接
Usage: getopts optstring varname [arg ...]
注:
varname 每次匹配成功的选项
arg 参数列表,没写时它会取命令行参数列表
$OPTIND 特殊变量,option index,会逐个递增
$OPTARG 特殊变量,option argument,不同情况下有不同的值
细则1:
当optstring以”:“开头时,getopts会区分invalid option错误和miss option argument错误。invalid option时,varname会被设成?,$OPTARG是出问题的option;miss option argument时,varname会被设成:,$OPTARG是出问题的option。
如果optstring不以”:“开头,invalid option错误和miss option argument错误都会使varname被设成?,$OPTARG是出问题的option。
细则2:
当optstring中的字母跟”:“时,表明该option可接参数,参数(argument)放在$OPTARG中
简单的例子:
#!/bin/sh
usage()
{
echo `basename $0` [-a] [-b] args
exit 0
}
while getopts ":ab:" options
do
case ${options} in
a)
echo "you enter -a as an option"
;;
b)
echo "you enter -b as an option"
echo "\$OPTARG is $OPTARG"
;;
\?)
usage
;;
esac
done
exit 0
执行结果:
m@ubuntu ~/W/S/builtInCmd> ./getops.sh -ab zhouyixing
you enter -a as an option
you enter -b as an option
$OPTARG is zhouyixing
m@ubuntu ~/W/S/builtInCmd>
分析:
while getopts ":ab:" options # 根据 getopts ":ab:" options的执行状态循环