shell脚本中使用getopts函数解析参数

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

使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值