我有一个名为foobar.rb
的Ruby脚本,它带有多个参数。
我希望(可选)能够在命令行上指定一个整数数组,并能够将它们作为单个选项进行处理。我认为我的命令行看起来像这样:
foobar.rb [1,2,3]
在1-10的范围内,我对Ruby的了解可能在6左右。足以知道可能有一种简单的方法来实现这一目标,但还不足以知道它是什么,甚至不知道在哪里查看文档
如何解析这个以逗号分隔的整数列表,最后在代码中使用Array
?如果存在这样的解决方案,我更喜欢一种不需要添加任何外部库的idomatic,1-liner解决方案。
答案 0 :(得分:10)
我会自己使用optparse
,就像这样:
require 'optparse'
options = {}
OptionParser.new do |opts|
opts.banner = "Usage: #{$0} [options]"
opts.on("-a", "--argument a,b,c", Array, "Array of arguments") { |a| options[:array] = a.map { |v| v.to_i } }
end.parse!
puts options.inspect
=> {:array=>["1", "2", "3", "4"]}
答案 1 :(得分:3)
如果你使用bash作为你的终端,这应该有效:
integer_array = ARGV[0].scan(/\d/).map(&:to_i) # => Array containing 1,2,3
尝试使用zsh并崩溃,因为zsh尝试解释命令行上的[]
对于zsh,你必须使用
foobar.rb "[1,2,3]"