您的位置:首页 > 运维架构 > Linux

Linux 处理复杂输入参数命令 getopt

2012-07-10 15:14 309 查看
getopt [options] -o|--options optstring [options] [--] parameters

选项说明:

-a:使getopt长参数支持"-"符号打头,必须与-l同时使用

-l:后面接getopt支持长参数列表

-n program:如果getopt处理参数返回错误,会指出是谁处理的这个错误,这个在调用多个脚本时,很有用

-o:后面接短参数列表,这种用法与getopts类似

-u:不给参数列表加引号,默认是加引号的(不使用-u选项),例如在加不引号的时候 --longoption "arg1 arg2" ,只会取到"arg1",而不是完整的"arg1 arg2"

有两种使用方法

a.
ARGV=($(getopt -o 短选项1[:]短选项2[:]...[:]短选项n -l 长选项1,长选项2,...,长选项n -- "$@"))
for((i = 0; i < ${#ARGV[@]}; i++)) {
eval opt=${ARGV[$i]}
case $opt in
-短选项1|--长选项1)
process
;;
# 带参数
-短选项2|--长选项2)
((i++));
eval opt=${ARGV[$i]}
;;
...

-短选项n|--长选项n)
process
;;
--)
break
;;
esac
}


b.
ARGV=($(getopt -o 短选项1[:]短选项2[:]...[:]短选项n -l 长选项1,长选项2,...,长选项n -- "$@"))
eval set -- "$ARGV"

while true
do
case "$1" in
-短选项1|--长选项1)
process
shift
;;
-短选项2|--长选项2)
# 获取选项
opt = $2
process
shift 2
;;
......

-短选项3|--长选项3)
process
;;
--)
break
;;
esac
}


注意:如果getopt命令本身没有使用-o|--option选项的话,那么--后面的第一个参数被当做短选项
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: