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 に答える