我正在为我的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
没有发现这一点。有什么想法吗?
答案 0 :(得分:3)
"$*"
将您的函数收到的所有参数作为单个参数传递给getopt
。因此,您实际上正在运行getopt lLo:p:t: "-o legal -p another..."
而是需要"$@"
。