使用--getopts来获取整个单词标志

时间:2014-02-25 20:45:37

标签: bash unix getopts

可以使用getopts来获取全字标记吗?

如下:

while getopts ":abc --word" opt; do
    case ${opt} in
        a) SOMETHING
            ;;
        ...
        --word) echo "Do something else."
            ;;
    esac
done

尝试拿起那些双破折号标志。

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:1)

基本上是方舟的答案,但比mywiki页面更容易阅读:

#!/bin/bash
# example_args.sh

while [ $# -gt 0 ] ; do
  case $1 in
    -s | --state) S="$2" ;;
    -u | --user) U="$2" ;;
    -a | --aarg) A="$2" ;;
    -b | --barg) B="$2" ;;

  esac
  shift
done

echo $S $U, $A $B

#$是参数的数量,-gt是“大于”,在这种情况下,$1是标志,$2是标志的值。

./example_args.sh --state IAM --user Yeezy -a Do --barg it 结果:

IAM Yeezy, Do it

答案 2 :(得分:0)

找到一种方法:

while getopts ":abc-:" opt; do
    case ${opt} in
        a) echo "Do something"
            ;;
        ...
        -)
            case ${OPTARG} in
                "word"*) echo "This works"
                    ;;
            esac
    esac
done

通过在opstring中添加 - :并使用$ OPTARG添加子案例,您可以选择所需的长选项。如果要包含该选项的参数,可以在案例中添加*或= *并选取参数。