shell获取参数

#!/bin/bash

Usage()
{
    echo -e "Usage: `basename $0` [-a] [-b value] [-c value] [-h] args\n";
    exit 1;
}

PARAM_A_FLAG=0;
PARAM_B_FLAG=0;
PARAM_B_VAL="";
PARAM_C_FLAG=0;
PARAM_C_VAL="";

#可以调整参数的顺序
ARG=`getopt ab:c:h: $*`

#重新设置参数
set --$ARG;

#注意冒号之后的空格一定要有
while getopts ab:c:h PARAM_VAL
do
    case $PARAM_VAL in
    a|auto)
        PARAM_A_FLAG=1;
        ;;
    b)
        PARAM_B_FLAG=1;
        PARAM_B_VAL=$OPTARG;
        ;;
    c|cc)
        PARAM_C_FLAG=1;
        PARAM_C_VAL=$OPTARG;
        ;;
    h|help)
        Usage;
        ;;
    *)
        ;;
    esac
done

if [ $PARAM_A_FLAG -ne 0 ]; then
    echo -e "******** option -a specified! ********\n";
fi

if [ $PARAM_B_FLAG -ne 0 ]; then
    echo "******** option -b specified! ********";
    echo -e "-b:$PARAM_B_VAL\n";
fi

if [ ! -z $PARAM_C_VAL ]; then
    echo "******** option -c specifiled! ********\n";
    echo -e "-c value:$PARAM_C_VAL\n";
fi

shift $(($OPTIND -1));
printf "Remaining arguments are: %s\n" "$*";

 

结果:

./args.sh -a -b bb -c cc dd
******** option -a specified! ********

******** option -b specified! ********
-b:bb

******** option -c specifiled! ********\n
-c value:cc

Remaining arguments are: dd

./args.sh -h
Usage: args.sh [-a] [-b value] [-c value] [-h] args

猜你喜欢

转载自andylin02.iteye.com/blog/856954