我是 运行 美分 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
问题脚本
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