在bash中使用getopts来获取可选的输入参数

时间:2014-05-29 22:49:59

标签: bash shell getopt getopts

我使用getopts来处理输入参数。我在阅读可选参数值时遇到问题 当我使用参数test.sh -t test -r server -p password -v 1来调用脚本时 $OPTARG未返回可选参数-v的值。

任何人都可以告诉我如何处理可选参数值吗?

#!/bin/bash

usage() 
{
cat << EOF
usage: $0 options

OPTIONS:
   -h      Show this message
   -t      Test type
   -r      Server address
   -p      Server root password
   -v      Verbose
EOF
}

TEST=
SERVER=
PASSWD=
VERBOSE=

echo "======111======"
while getopts "ht:r:p:v" OPTION
do
     case $OPTION in
         h)
             usage
             echo "===Option h selected=="
             exit 1
             ;;
         t)
             TEST=$OPTARG
             echo "====option t selected===$TEST"
             ;;
         r)
             SERVER=$OPTARG
             echo "=====option r selected==="
             ;;
         p)
             PASSWD=$OPTARG
             echo "====option p selected==="
             ;;
         v)
             VERBOSE=$OPTARG
             echo "======option v selected===$VERBOSE"
             ;;
         ?)
             echo "====unknown option selected===="
             usage
             exit
             ;;
     esac
done

echo "========222===="

1 个答案:

答案 0 :(得分:0)

  1. 在案例陈述中做事。

    case $OPTION in
      v)
        VERBOSE=$OPTARG
        do_the_thing $OPTARG
        ;;
    esac
    
  2. 在案例陈述之后做事。

    if [ ! -z "$VERBOSE" ]; then
      do_the_thing "$VERBOSE"
    else
      do_not_do_the_thing
    fi