如果这是一个明显的明显问题,我很抱歉,但是optparse的文档非常糟糕,我似乎无法理解它。我刚才有一个简单的问题。我可以像这样使用optparse执行一个方法:
dns = DNS.new
options = {}
optparse = OptionParser.new do |opts|
opts.banner = $usage
options[:standard] = false
opts.on( 'a', '--standard', 'Standard DNS Query' ) do
options[:standard] = true
end
options[:mail] = false
opts.on( 'mx', '--mail', 'MX Server Query' ) do
options[:mail] = true
end
options[:reverse] = false
opts.on( 'ptr', '--reverse', 'Reverse DNS Lookup' ) do
options[:reverse] = true
end
opts.on( '-h', '--help', 'Display usage' ) do
puts opts
exit
end
end
optparse.parse!
ARGV.each do |arg|
puts "Querying #{arg}"
dns.a_records(arg) if options[:standard]
dns.mx_records(arg) if options[:mail]
dns.ptr_records(arg) if options[:reverse]
end
我似乎不能,或者我做错了。因为实际发生的唯一事情就是打印字符串“Querying#{arg}”。
答案 0 :(得分:0)
你的例子几乎适合我。您需要更改的唯一内容是在短选项名称前添加“ - ”。即。
opts.on( '-a', '--standard', 'Standard DNS Query' )
而不是
opts.on( 'a', '--standard', 'Standard DNS Query' )
那样<your_program> something -a
将定义:standard
选项。如果您将a
保留在opts.on
中,则会在您的周期中将其识别为另一个arg
,而不是作为选项。