在平常的脚本中有时候我们会使用参数,大部分我们都是使用yourscript.sh <option1> <option2> ,在脚本里就利用$1,$2来进行接收,那我们能不能像系统中其它脚本一样使用带有选项的参数呢? 哒哒哒,主角登场:getopts。
1、命令的格式
getopts option_string variable [arg...]
option_string:以冒号为分隔的选项
variable:将每次匹配成功的选项,保存在给variable(这个你可以随便取名,用在while循环中)
特殊的getopts变量
OPTIND:初始化为1, 每次getopts处理完一个命令行选项后,OPTIOND就增加为getopts要处理的下一个选项的序号
OPTARG:包含了对应variable的选项的参数的值
这里还要注意一下options-strings开始部分有与没有冒号的区别:
A、前面没有冒号:
会按照系统的定义报错
a. 指定了非法选项,即不存在的选项,会报错:scriptname: illegal option — p
b. 选项需要参数但没有指定,会报错:scriptname: : option requires an argument –
c. 不论是指定了错误的选项或者指定了带选项的参数没有指定参数,variable都设置为”?”,对应的OPTARG为出错的选项
B、选项前面有冒号,可以屏蔽这些错误信息,使用自己的反馈信息
a. 当指定的参数不存在时,variable设置为”:”,对应的$OPTARG为”对应的选项”
b. 指定的选项是带参数的而没有提供参数,variable设置为”?”,对应的$OPTARG为”这时候的选项”
可以根据这两个选项指定不同的反馈信息,也就是我们可以控制这些信息了