【问题标题】:bash - getopts in switch casebash - 开关盒中的 getopts
【发布时间】:2018-01-14 11:19:11
【问题描述】:

我正在尝试在 switch case 循环中使用 getopts。 如果我只使用 getopts 或只使用 switch case,它就可以工作,但是当我将这两个结合起来时,getopts 不会触发。

我搜索了很多,但我发现任何关于如何组合它们的内容,问题是我错过了一些愚蠢的东西,所以给我...

这里是代码精华。

#!/bin/bash
case $1 in

        ver)
            echo "vesion"
            exit 0
        ;;
        op)
           while getopts ":a" opt; do
                case $opt in
                 a)
                   echo "-a was triggered!" >&2
                 ;;
                \?)
                   echo "Invalid option: -$OPTARG" >&2
                 ;;
                esac
        done
        ;;
esac

当我这样做时

# bash -x test.sh op -a

我明白了

+ case $1 in
+ getopts :a opt

(如果没有调试,我什么也得不到)

将这两者结合起来我缺少什么

谢谢:)

【问题讨论】:

    标签: bash shell arguments getopts


    【解决方案1】:

    您应该在 op) 选项的开头添加一个 shift 指令,在调用 getopts 之前,吃掉 op 参数本身。否则,getopts 将分析的第一个参数是 op,它将静默停止(选项结束)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 2012-10-24
      • 1970-01-01
      • 2021-07-15
      • 2011-02-22
      • 2015-10-25
      • 2021-06-22
      • 1970-01-01
      相关资源
      最近更新 更多