shell 中getopts的简单解述

getopts可以规定这个程序启动时接收的参数


举些例子:
./test.sh
while getopts ab: opt           #这里定义了这个程序可以接收abc三种参数,其中a必须要用值,他都都不含值
do 
     case $opt in
          a)
               echo "a=$OPTIND"    #通过OPTIND取出这个参数的序号。
          ;;
          b)
               echo "b=$OPTIND"
               echo "${OPTARG}"    #通过OPTARG取出这个参数的值
          ;;
          \?)                             #\? 代表所有在上面没有定义的参数
               echo "there is somthing unknow"
               exit 0
          ;;
     esac
done



执行这段脚本
./test.sh -ab 12
运行的结果是
a=1
b=3
12
如果只这样执行
./test.sh -a -b 12 -a
a=2
b=4
12
a=5


OPTIND展开:
OPTIND存储的是下一个要处理的参数的序号
从第一个来看
程序处理到a,下一个要处理的是b,但是他们都在第一个参数里,所以OPTIND=1
程序处理到b,本来下一个要处理的12,但是12不是参数就跳过,下一个要处理的是null。所以OPTIND=3

看第二个
程序处理到a,下一个要处理的是b,所以OPTIND=2
程序处理到b,下一个要处理的是12,但是12不是参数就条古,下一个要出里的是a,所以OPTIND=4
程序处理到第二个a,下一个要处理的是null,所以OPTIND=5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值