命令行参数getopt无法正常工作

时间:2013-06-27 18:57:40

标签: linux bash getopt sh

我正在为我的bourne脚本测试getopt,我发现了一些非常有趣的结果。

#!/bin/sh

params=$(getopt lLo:p:t: "$*")
exit 0

如果我执行以下操作:

./myscript -z blah -o legal -p another_legal

正如所料,我会得到:

getopt: illegal option -- z
getopt: illegal option --
getopt: illegal option -- b
getopt: illegal option -- l
getopt: illegal option -- a
getopt: illegal option -- h

但如果我这样做:

./myscript -o legal -p another_legal -z blah 

getopt没有发现这一点。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

"$*"将您的函数收到的所有参数作为单个参数传递给getopt。因此,您实际上正在运行getopt lLo:p:t: "-o legal -p another..."而是需要"$@"