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



getopts可以用来拾取全词标志吗?

内容如下:

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

试图拿起那些双破折号旗帜。

基本上是

方舟的答案,但比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

http://mywiki.wooledge.org/BashFAQ/035功劳归于:我如何使用内置 Bash getopts 的长选项?

找到了一种方法来做到这一点:

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

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

相关内容

  • 没有找到相关文章

最新更新