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))` "