在shell脚本中使用getopts处理参数

在平常的脚本中有时候我们会使用参数,大部分我们都是使用yourscript.sh ,在脚本里就利用$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为”这时候的选项”

可以根据这两个选项指定不同的反馈信息,也就是我们可以控制这些信息了


你可能感兴趣的:(linux基础)