0

我正在为我的 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不明白这一点。任何想法为什么?

4

1 回答 1

3

"$*"将函数收到的所有参数作为单个参数传递给getopt. 所以你实际上是在运行getopt lLo:p:t: "-o legal -p another..."你想要"$@"的。

于 2013-06-27T19:04:33.643 回答