Shell script中使用getopt例子

使用getopt可以非常方便的格式话选项跟对应的参数,例子如下


#!/bin/bash
set -- `getopt -q ab:c "$@"`
while [ -n "$1" ]
do
case "$1" in
-a)
echo "option -a";;
-b)
value="$2"
echo "option -b with para $value"
shift;;
-c) echo "option -c";;
--) shift
break;;
*) echo "$1 not option";;
esac
shift
done
count=1
for para in "$@"
do
echo "#$count=$para"
count=$[$count+1]
done

./test -ab test1 -cd test2 test3 test4
结果:option -a
option -b with para 'test1'
option -c
#1='test2'
#2='test3'
#3='test4'

getopt 用法:
getopt options optstring parameters

对于./test -ab test1 -cd "test2 test3" test4
这样的参数类型,getopt是无能为力的。这就需要getopts了


#!/bin/bash
while getopts :ab:c opt
do
case $opt in
a) echo "-a option";;
b) echo "-b option with value $OPTARG";;
c) echo "-c option";;
*) echo $opt not a option;;
esac
done

OPTARG 环境变量存放对应选项的参数
./test -ab "hello,world" -cdefg
结果:
-a option
-b option with value hello,world
-c option
? not a option
? not a option
? not a option
? not a option

命令参数的处理

#!/bin/bash
while getopts :ab:cd opt
do
case $opt in
a) echo "-a option";;
b) echo "-b option with value $OPTARG";;
c) echo "-c option";;
d) echo "-d option";;
*) echo $opt not a option;;
esac
done
count=1
shift $[$OPTIND-1]
for para in "$@"
do
echo "#$count=$para"
count=$[$count+1]
done

./test -abtest1 -cd test2 test3 test4
结果:
-a option
-b option with value test1
-c option
-d option
#1=test2
#2=test3
#3=test4
OPTIND环境变量存放getopts命令剩余的参数列表当前位值
用法:getopts optstring variable
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值