getopts 的坑

getopts 真的比较坑啊。。。。语言描述不同,以下用例子来体现,对脚本文件 ./test.sh

#注意,选项一开始没有冒号
while getopts ab:c OPT; do
   case $OPT in
       a) echo "a";;
       b) echo "b : $OPTARG";;
       c) echo "c";;
       \?) echo "wrong input";;
   esac
done</span>

此时。如果输入是:
  ./test.sh -a -c -k -b

输出将是:

> a

> c

> Illege args -k

> wrong input

> no arg for -b option

> wrong input

 -k 是非法选项,报错后将OPT设置为 ? 。-b 之后没有选项值,则不符合要求,报错后将OPT设置为 ?


如果输入是:

 ./test -a -b -c  

注意:输出将是很坑的!!!!!!!!!!!!!

> a

> b : -c

这是 -b 选项将后面的 -c 选项当做了自己的值。。。然后就收了。然后也不报错。。。。看到这里心里也是醉了


此外要注意,在指定 getopts 的选项参数之前如果有冒号。则整个过程变为静默模式,也就是该报错的地方不报错,直接将取到的选项设置为 ? 号。(上面例子中的红色全部不输出)

#注意,选项一开始有冒号
while getopts :ab:c OPT; do
   case $OPT in
       a) echo "a";;
       b) echo "b : $OPTARG";;
       c) echo "c";;
       \?) echo "wrong input";;
   esac
done</span>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值