shell 中getopts的简单解述

来源:互联网 发布:星际争霸人类 知乎 编辑:程序博客网 时间:2024/05/22 12:27
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          ;;     esacdone



执行这段脚本
./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
原创粉丝点击