如何解决如何将getoptlong与变量选项一起使用?
| 我有几个Nagios脚本,它们继承了一个常见的NagiosCheck类。由于每个检查的getopts选项都略有不同,因此我认为最好是通过NagiosCheck类方法生成可用选项。但是我被困住了... 这就是我所说的方法:class CheckFoobar < NagiosCheck
...
end
check = CheckFoobar.new
check.generate_options(
[\'-H\',\'--hostname\',GetoptLong::REQUIRED_ARGUMENT],[\'-P\',\'--port\',[\'-u\',\'--url\',GetoptLong::REQUIRED_ARGUMENT])
方法本身:
class NagiosCheck
...
def generate_options (*args)
options = []
args.each do |arg|
options << arg
end
parser = GetoptLong.new
options.each {|arg| parser.set_options(arg)}
end
end
然后解析器仅存储最后一项:
p parser # => #<GetoptLong:0x00000000e17dc8 @ordering=1,@canonical_names={\"-u\"=>\"-u\",\"--url\"=>\"-u\"},@argument_flags={\"-u\"=>1,\"--url\"=>1},@quiet=false,@status=0,@error=nil,@error_message=nil,@rest_singles=\"\",@non_option_arguments=[]>
您对我有什么建议,如何使解析器存储所有参数?
问候,
麦克风
...关于stackoverflow的第一个问题。如果我做错了任何事情,请多包涵,并让我知道,以便我能够适应。
解决方法
generate_options方法太复杂。 Getoptlong.new将数组数组作为参数。
class NagiosCheck
def generate_options (*args)
GetoptLong.new(*args)
end
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。