Bash getopts未提供任何参数

Bash getopts未提供任何参数,bash,getopts,Bash,Getopts,如何检查是否没有提供必需的参数?我发现开关情况下的“:”选项应该足够用于此目的,但它从未进入该情况(代码块)。不管我是把“冒号”放在开头还是其他地方 我的代码: while getopts :a:b: OPTION; do case "$OPTION" in a) var1=$OPTARG ;; b) var2=$OPTARG ;;

如何检查是否没有提供必需的参数?我发现开关情况下的“:”选项应该足够用于此目的,但它从未进入该情况(代码块)。不管我是把“冒号”放在开头还是其他地方

我的代码:

while getopts :a:b: OPTION;
do
     case "$OPTION" in
         a)
             var1=$OPTARG
             ;;
         b)
             var2=$OPTARG
             ;;
         ?)
             exitScript "`echo "Invalid option $OPTARG"`" "5"
             ;;
         :)
             exitScript "`echo "Option -$OPTARG requires an argument."`" "5"
             ;;
         *)
             exitScript "`echo "Option $OPTARG unrecognized."`" "5"
             ;;
     esac
done

THX提前。

?)
案例中
块应写为
“?”
您必须退出
。下一个can(部分)工作

部分原因是什么时候将调用上述脚本作为

$ bash script -a a_arg -b b_arg extra
威尔会像你期望的那样工作

arg for a :a_arg:
arg for b :b_arg:
unused parameters:extra:
但当你把它称为

bash script -a -b b_arg
威尔印刷品

arg for a :-b:
arg for b ::
unused parameters:b_arg:
什么不是,什么是你想要的


还有UUOE。(使用echo)。

+1为了澄清,在
的情况下,
选择器中不带引号的
是一个全局模式,它匹配任何单个字符-在这里截取
的值,并且永远不会到达为其指定的子句。首先,尽量提供最少的工作示例:您的示例不是因为
exitScript
函数。
arg for a :-b:
arg for b ::
unused parameters:b_arg: