4

foobar.rb複数のパラメーターを受け取る、と呼ばれるRubyスクリプトがあります。

(オプションで)コマンドラインで整数の配列を指定し、それらを単一のオプションとして処理できるようにしたい。私のコマンドラインは次のようになると思います。

foobar.rb [1,2,3]

1〜10のスケールで、Rubyに関する私の知識はおそらく約6です。これを達成する簡単な方法があることを知るには十分ですが、それが何であるか、またはドキュメントのどこを見ればよいかを知るには十分ではありません。

Arrayこの単一のコンマ区切りの整数リストを解析して、コードにを含めるにはどうすればよいですか?そのようなソリューションが存在する場合は、外部ライブラリの追加を必要としない、理想的な1ライナーソリューションをお勧めします。

4

2 に答える 2

12

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"]}
于 2012-11-08T17:05:54.390 に答える
3

端末として bash を使用している場合、これは機能するはずです。

integer_array = ARGV[0].scan(/\d/).map(&:to_i) # => Array containing 1,2,3

zsh で試してみたところクラッシュしましたが、zsh[]はコマンド ラインで を解釈しようとするためです。

zshの場合、使用する必要があります

foobar.rb "[1,2,3]"
于 2012-11-08T17:02:59.280 に答える