2019-02-01   ruby   getopts 

Rubyスクリプトでコマンドライン引数を扱う(optparseとgetopts)

参照

optparse を require すると ARGV に OptionParser::Arguable の機能 が加わります。以下の書き方ができるようになります。 OptionParser::Arguable#getopts はオプションを保持した Hash を返します。

サンプルプログラム

#!/usr/bin/env ruby

require 'optparse'

opts = ARGV.getopts("vf:", "verbose", "filename:", "maxsize:1024")
p opts

--helpが使える

$ ./getopts-sample --help
Usage: getopts-sample [options]
    -v
    -f VAL
        --verbose
        --filename=VAL
        --maxsize=1024

短いオプション

$ ./getopts-sample -v
{"v"=>true, "f"=>nil, "verbose"=>false, "filename"=>nil, "maxsize"=>"1024"}

長いオプション

$ ./getopts-sample --verbose
{"v"=>false, "f"=>nil, "verbose"=>true, "filename"=>nil, "maxsize"=>"1024"}

短いオプション(引数付き)

$ ./getopts-sample -f example.txt
{"v"=>false, "f"=>"example.txt", "verbose"=>false, "filename"=>nil, "maxsize"=>"1024"}

長いオプション(引数付き)

$ ./getopts-sample --filename example.txt
{"v"=>false, "f"=>nil, "verbose"=>false, "filename"=>"example.txt", "maxsize"=>"1024"}

長いオプション(デフォルトの値の上書き)

$ ./getopts-sample --maxsize 4096
{"v"=>false, "f"=>nil, "verbose"=>false, "filename"=>nil, "maxsize"=>"4096"}
 2019-02-01   ruby   getopts