Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234358
  • 博文数量: 95
  • 博客积分: 400
  • 博客等级: 一等列兵
  • 技术积分: 906
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-04 16:04
个人简介

人生意义在于积累,而不是日复一日的重复

文章分类

全部博文(95)

文章存档

2016年(2)

2015年(44)

2014年(35)

2011年(5)

2010年(9)

我的朋友

分类: LINUX

2014-11-17 16:31:20

命令行处理参数getopt与getopts相似但略有不同,主要包含以下几点:
1.    getopt是独立命令,getopts是bash是buildins;
2.    getopts不支持长选项,如--help不可识别,而getopt可以,并且功能更丰富;

例1:getopts
while getopts "a:bc" OPT
do
        case $OPT in
            "a")
                echo "a case"
                str=$OPTARG
                ;;
            b)
                echo "b case"
                ;;
            c)
                echo "c case"
                ;;
        esac
done
    
    使用getopts会自动产生两个变量$OPTIND和$OPTARG
,OPTIND初始值为1,是下一个要处理的参数的索引,如果存在下一个参数,则返回true,故while循环会继续向下,如果case命中,则$OPTARG为其后相应的参数,即-a后的参数值。

注:
    1.    选项后面有冒号,表示该选项需要参数,否则不需要参数;如果冒号放在最前面,则表示静默模式,在静默模式下,当用户输入的参数不满足OPTSTRING时,不会讲illegal option这样的错误信息打印出来
    2.    case选项中双引号可加可不加;
    3.    最后一个选项后面的两个分号可以不加,加上也不受影响;
    4.    在函数中使用getopts,第二次调用函数时getopts就会失效,不再解析参数,是由于第一次调用后OPTIND变量就被赋值了,再次调用就不会再解析了,为了防止该问题,在函数开始前将OPTIND进行置空,加入如下代码就可以了:
            unset OPTIND
    
阅读(542) | 评论(0) | 转发(0) |
0

上一篇:bash与sh

下一篇:《大清相国》

给主人留下些什么吧!~~