Qqw*_*qwy 7 ruby command-line-tool command-line-arguments
我第一次使用OptionParser。
我想知道的是,如何让 OptionParser 处理没有以特定标志名为前缀的参数。我希望能够编写如下语句:
myscript.rb -d someoption -b someotheroption filename
Run Code Online (Sandbox Code Playgroud)
filename我要处理的文件的名称在哪里。它没有以任何选项标志为前缀。如何使用 OptionParser 解析上述命令,并获得对 的引用filename?
OptionParser专门处理选项 - 即以破折号开头的内容。解析后,剩余的参数留在ARGV. 您可以在那里检查您的文件名,如果丢失,则退出并显示错误。
对他们的最小示例稍作修改,
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: example.rb [options]"
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
options[:verbose] = v
end
end.parse!
p options
p ARGV
p "Where is my hat?!" if ARGV.length == 0
Run Code Online (Sandbox Code Playgroud)
你得到这个:
$ ruby parse.rb
{}
[]
"Where is my hat?!"
$ ruby parse.rb hat
{}
["hat"]
$ ruby parse.rb -v hat
{:verbose=>true}
["hat"]
Run Code Online (Sandbox Code Playgroud)