我是Shell和Linux的新手,如果有人可以帮助我找到命令中的错误,那将是很棒的:
if ! options=$(getopt -n myscript -l a:,b:,cc:,dd:,ee:,ff:,gg:,hh: -- "$@"); then exit 1; fi
我收到一条错误消息:
mhagent: unrecognized option '--hh'
options=' --aa '\''val1'\'' --ibb '\''val2'\'' --cc '\''val4'\'' --dd '\''val4'\'' --ee '\''val5'\'' --ff '\''val6'\'' --gg '\''val7'\'' --'
如果删除最后一个选项:嗯,它工作正常。
if ! options=$(getopt -n myscript -l a:,b:,cc:,dd:,ee:,ff:,gg: -- "$@"); then exit 1; fi
免责声明:此答案假定您使用的getopt
是util-linux。
好的,这一点都不明显,但是您必须指定一个optstring(即您要接受的简短选项列表)。假设您不想接受任何短选项,只需传递一个空字符串即可。
简介:
getopt optstring parameters
getopt [options] [--] optstring parameters
getopt [options] -o|--options optstring [options] [--] parameters
请注意,所有3种形式均需要optstring。
由于您需要通过-l
,因此必须使用带有选项的选项之一,因此对getopt的调用应为:
getopt -n myscript -l a:,b:,cc:,dd:,ee:,ff:,gg:,hh: -- '' "$@"
或者:
getopt -n myscript -l a:,b:,cc:,dd:,ee:,ff:,gg:,hh: -o '' -- "$@"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句