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 : ああああ