ARGVで渡したパラメータをparseする

実行時に-helpとか-name shokaiとか渡すやつ


args-params.rb

#!/usr/bin/env ruby

# parse
params = Hash.new
for i in 0...ARGV.size do
  if ARGV[i].match(/-+.+/)
    term = ARGV[i].match(/-+(.+)/)[1].to_sym
    if i == ARGV.size-1 || ARGV[i+1].match(/-+.+/)
      params[term] = true # option
    else
      params[term] = ARGV[i+1] # param
    end
  end
end

# result
puts 'パラメータをpasreする。 -num 100のようにパラメータを渡す' if params[:help] == true
puts 'num='+params[:num] if params[:num].class == String

params.each{|key,value|
  print "(option)" if value == true
  print "(param)" if value.class == String
  puts key.to_s + " : " + value.to_s
}
% ruby args-params.rb -help
パラメータをpasreする。 -num 100のようにパラメータを渡す
(option)help : true
% ruby args-params.rb -num 5678
num=5678
(param)num : 5678
% ruby args-params.rb -num 5678 -name sho
num=5678
(param)name : sho
(param)num : 5678
% ruby args-params.rb -num 5678 -name sho -debug
num=5678
(param)name : sho
(param)num : 5678
(option)debug : true
% ruby args-params.rb -num 5678 -name sho -debug -test
num=5678
(option)test : true
(param)name : sho
(param)num : 5678
(option)debug : true
% ruby args-params.rb -num 5678 -name sho -debug ああああ -test
num=5678
(option)test : true
(param)name : sho
(param)num : 5678
(param)debug : ああああ
% ruby args-params.rb -num 5678 -name "sho hashimoto" -debug ああああ -test
num=5678
(option)test : true
(param)name : sho hashimoto
(param)num : 5678
(param)debug : ああああ