※詳しくは、以下の公式ドキュメントを参照
はじめに
RubyにはARGV
を使用してコマンドライン引数を取り出す機能があります。
# sample.rb com0 = ARGV[0] com1 = ARGV[1] com2 = ARGV[2] com3 = ARGV[3] p com0, com1, com2, com3 $ ruby sample.rb -a 'test1' -b 'test2' # -a # test1 # -b # test2
optparseを使う
optparseを使うことでオプションを受け付けることができるようになります。 先ほどの例にoptparseを入れて確認してみましょう。
# sample.rb require 'optparse' opt = OptionParser.new opt.on('-a') opt.on('-b') # parse!()の場合、ARGVが変更される opt.parse!(ARGV) p ARGV $ ruby sample.rb -a 'test1' -b 'test2' # ["test1", "test2"] $ ruby sample.rb -a foo bar -b baz # ["foo", "bar", "baz"]
このように、aオプションとbオプションを作成することができました。
オプションの引数
-aオプションの引数の指定を必須にする場合は、-a VAL
と指定します。必須ではない場合は-a [VAL]
とします。
# sample.rb require 'optparse' opt = OptionParser.new opt.on('-a VAL') {|v| p v } # <- " VAL" を追加 opt.on('-b') {|v| p v } opt.parse!(ARGV) p ARGV $ ruby sample.rb -a foo bar -b baz # "foo" # true # ["bar", "baz"] $ ruby sample.rb -a #/usr/local/lib/ruby/1.9/optparse.rb:455:in `parse': missing argument: -a (OptionParser::MissingArgument)