繁体   English   中英

bash-开关情况下的getopts

[英]bash - getopts in switch case

我正在尝试在switch case循环中使用getopts。 如果我仅使用getopts或仅使用开关盒,那么它是可行的,但是当我将两者结合使用时,不会触发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

(没有调试我什么也没得到)

我想将这两个结合在一起的是什么

谢谢 :)

您应该在op)选择的开头添加一个shift指令,然后再调用getopts来吃掉op参数本身。 否则, getopts将分析的第一个参数是op ,它将无声停止(选项结束)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM