我是 运行 美分 Os 7 bash shell 上的 korn 脚本 (ksh)。 "getopts" 未按预期工作。我究竟做错了什么?

I am running a korn script (ksh) on a Cent Os 7 bash shell. The "getopts" is not working as expected. What am I doing wrong?

问题脚本

testcmd.ksh

#!/usr/bin/ksh

while getopts "d: m s z a b " opt; do
echo $opt
    case $opt in
        d ) echo "d" ;;
        m ) echo "mail";;
        s ) echo "snmp";;
        z ) echo "force:";;
        a ) echo "fs";;
        b ) echo "bypass";;
        ? ) echo "Usage:  [-m] [-s] [-z] ";
            exit 4 ;; 

    esac            
done    

如果我 运行 上面的脚本为“./testcmd.ksh -a”,它给出

./testcmd.ksh: -a: unknown option
?
Usage:  [-m] [-s] [-z] 

我期待的输出是这样的

a
fs

可能是什么问题?

如果我将 shebang 更改为“#!/usr/bin/bash”,它会按预期工作。

但是,我只能使用“#!/usr/bin/ksh”。

我应该做什么改变?我正在使用 CentOs 7。

有人可以指点一下吗?

只是为了帮助任何正在寻找答案的人:

有效的答案是 Aaron 的评论:

Looks like the spaces mess things up. Got it running without them – Aaron