getopts 用法

getopts是linux系统中的一个内置变量,一般用在循环中。
每当执行循环是,getopts都会检查下一个命令选项,如果这些选项出现在option中,则表示是合法选项,否则不是合法选项。并将这些合法选项保存在VARIABLE这个变量中。

getopts还包含两个内置变量,及OPTARG和OPTIND
OPTARG就是将选项后面的参数(或者描述信息DESCPRITION)保存在这个变量当中。
OPTIND:这个表示命令行的下一个选项或参数的索引(文件名不算选项或参数)

在shell脚本中,对于简单的参数,我们使用$1 $2 来处理即可;

示例 1

#!/bin/bash
SOFT_DIR=$1 MAVEN_DIR=$2 echo $SOFT_DIR echo $MAVEN_DIR ----------------- $ sh test.sh /home/soft /home/soft/maven /home/soft /home/soft/maven

示例 2

        #!/bin/sh
        while getopts :ab: name
        do
            case $name in
            a)  
                aflag=1
            ;;
            b)  
                bflag=1
                bval=$OPTARG
            ;;
            \?) 
                echo "USAGE:`basename $0` [-a] [-b value]"
                exit  1
            ;;
            esac
        done
        if [ ! -z $aflag ] ; then
            echo "option -a specified"
            echo "$aflag"
            echo "$OPTIND"
        fi
        if [ ! -z $bflag ] ; then
            echo  "option -b specified"
            echo  "$bflag"
            echo  "$bval"
            echo  "$OPTIND"
        fi
        echo "here  $OPTIND"
        shift $(($OPTIND -1))
        echo "$OPTIND"
        echo " `shift $(($OPTIND -1))`  "

 

posted @ 2018-04-03 17:33  01234567  阅读(841)  评论(0编辑  收藏  举报