OptionsParser执行方法?

时间:2014-10-08 20:35:37

标签: ruby

如果这是一个明显的明显问题,我很抱歉,但是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}”。

1 个答案:

答案 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,而不是作为选项。