使用shell对于脚本中参数解析时,可以用getopts函数进行参数解析。
语法格式如下:
getopts optstring variable
第一个参数optstring是解析参数规则的定义,定义了脚本后面参数列表的范围。比如 -a -b -c optstring就可以是 “abc”。如果参数后面有具体的值如 -a 123 -b 456 -c。optstring定义规则的时候有值的参数后面加一个":“如例子中 a和b参数后面有具体的值而c没有,optstring定义为 “a🅱️c”。 如果optstring由”:“开始如:”🔤" 则脚本执行过程中即使参数没有按照optstring定义的规则使用也不会报错
第二个参数可以把解析参数的名字付给variable
接下来参数对应的值(如果有的话)就可以用环境变量$OPTARG来获取,而下一个变量的索引可以用 $OPTIND来获取。
我们看一下例子:
#!/bin/sh
# getoptsdemo.sh
# 定义了三个参数 abc 其中c后面可以带参数值
while getopts "abc:" opt
do
echo $opt $OPTARG $OPTIND
done
我们看看执行结果:
case1:
sh ./getoptsdemo.sh -a -b -c 123
a 2
b 3
c 123 5
$OPTIND a--1 b--2 c--3 123--4
OPTIND 代表下一个参数的索引 $opt是a的时候下一个参数是b 对应的$OPTIND是2,$opt对应b下一个参数是c对应的$OPTIND是3,$opt对应c下一个参数没有,那么$OPTIND就是参数最大索引+1。即:123索引4+1等于5
case2:
sh ./getoptsdemo.sh -abc 123
a 1
b 1
c 123 3
$OPTIND a--1 b--1 c--1 123--2
OPTIND 代表下一个参数的索引 $opt是a的时候下一个参数是b 对应的$OPTIND是1,$opt对应b下一个参数是c对应的$OPTIND是1,$opt对应c下一个参数没有,那么$OPTIND就是参数最大索引+1。即:123索引2+1等于3
case3:
sh ./getoptsdemo.sh -ab -c 123
a 1
b 2
c 123 4
$OPTIND a--1 b--1 c--2 123--3
OPTIND 代表下一个参数的索引 $opt是a的时候下一个参数是b 对应的$OPTIND是1,$opt对应b下一个参数是c对应的$OPTIND是2,$opt对应c下一个参数没有,那么$OPTIND就是参数最大索引+1。即:123索引3+1=4

本文详细介绍了Shell脚本中getopts函数的使用方法,包括参数解析规则的定义、$OPTARG和$OPTIND环境变量的作用,并通过三个案例展示了不同参数组合的解析结果。getopts函数用于解析命令行参数,帮助脚本处理复杂的参数传递问题。
4512

被折叠的 条评论
为什么被折叠?



