BUGS
The syntax if you do not want any short option variables at all is not very intuitive (you have to set them explicitly to the empty string).
如果你确实不想要任何短参数(短选项),那么语法不是很适合。(你必须用空字符串显示的声明)
例如:
getopt -al arg1:,arg2:,agr3: -- "$@"
由于上述语法只声明了长参数(长选项),没有任何短参数(短选项),解析的时候会遇到第一个参数的值无法取到的问题。
如果不想用任何短参数(短选项),以下为正确的写法:
getopt -o "" -al connect:,sql:,parallel:,id: -- "$@"
区别在于加了一个 -o "" ,-o表示短参数(短选项),空字符表示不用任何短参数(短选项)。
总结:
遇到问题,应该先去文档里找答案。
这个问题就是通过 man getopt 命令获取帮助文档找到的解决方法。
另外 $@ 表示参数列表,一定要加引号,这样写 "$@",前面的 -- 不能省略。