全部博文(163)
分类:
2008-07-02 17:35:38
|
optstring包含了选项字符,如果一个选项字符后跟着“:”(冒号)则说明此选项还需要一个参数,选项和参数之间应该使用空白符,getopts把参数放入OPTARG变量里。
“:”和“?”是不应该用在选项字符中的。
每次getopts命令被调用时,它把下一个选项字符放入name变量里,如果name不存在则初始化它。并且把下一个选项的索引值放入OPTIND变量里。每次shell或shell脚本被调用执行时OPTIND变量都被初始化为1。OPTIND变量不会被自动重置,所以当同一个脚本中用getopts来处理新的位置参数时需要手工重置。
当遇到选项末尾时,getops返回一个大于零的值。OPTIND变量被设置成第一个非选项的参数索引值。name变量被设置成“?”(问号)。
getopts有两种处理报错的方式。当第一个选项字符是“:”(冒号)时,进入silent模式,或者OPTERR变量被设置为0,也可以进入silent模式,即不报告错误。一般模式时,是报告错误信息的。
如果遇到一个无效的选项字符,name变量被置为“?”(问号)。(1)如果错误报告模式为一般模式,则输出错误信息,并且unset OPTARG变量。(2)如果错误报告模式为silent,则把发现的选项字符放入OPTARG变量,不输出任何诊断信息。
如果需要的一个参数为提供,(1)错误报告模式为一般模式,name变量被置为“?”,OPTARG变量被unset,输出诊断信息。(2)错误报告模式为silent,name变量被置为“:”,发现的选项字符被放入OPTARG变量。
getopts如果查找到由选项字符串指定的或未指定的选项,则返回true(0);如果遇到选项结束或者遇到错误,返回false(>0)。
|