名前付き引数をRubyスクリプトに渡す方法はありますか?Rubyの名前付きコマンドライン引数
私はパラメータを渡すARGVメソッドを理解していますが、これは特定の順序である必要があります。私がしたいのは、他のコマンドライン操作と同様に、名前付き引数を渡すことです。たとえば、
$ ruby someRubyScript.rb -a argumentA -b argumentB
名前付き引数をRubyスクリプトに渡す方法はありますか?Rubyの名前付きコマンドライン引数
私はパラメータを渡すARGVメソッドを理解していますが、これは特定の順序である必要があります。私がしたいのは、他のコマンドライン操作と同様に、名前付き引数を渡すことです。たとえば、
$ ruby someRubyScript.rb -a argumentA -b argumentB
-fカップルのオプションがありますようにGetoptLongは-fileのようなPOSIXスタイルのオプションならびに単一文字のオプションが可能になります。
OptionParserは、最も一般的なものの1つです。それはあなたが望むものを正確に行うことができ、APIは素晴らしいです。
GetOptLongも標準ライブラリにあり、POSIXスタイルのコマンドラインを再実装します。 Unixのコマンドラインアプリケーションをエミュレートしたい場合は、これをすべて実行できます。
アラートT.ハワードのMainは、コマンドラインスクリプトを作成する際の素晴らしい宝である。それは引数を解析することを超え、コマンドラインオプションを指定するための優れたDSLを使用して、自動使用とプロンプトの作成を行います。
2014更新
カップルの新しい宝石が人気に上昇している:
OptionParserを使用すると、いくつかのargs解析を簡単に実行できます。ここで
ruby application -a=12 -b=42 or
ruby application --argument_a=12 --argument_b=42
はドキュメントです:
http://www.ensta.fr/~diam/ruby/online/ruby-doc-stdlib/libdoc/optparse/rdoc/classes/OptionParser.html
を私はあなたが '='の間に置くとは思いませんオプションと引数 –
@ Mark Thomas、optparseはオプションとその値の間に空白、 '='、または何も入れません。 MRI 1.8.7でテストされています。 –
Rubyの標準ライブラリには、何をやるべきGetOptLongが付属していますよう
require 'optparse'
hash_options = {}
OptionParser.new do |opts|
opts.banner = "Usage: your_app [options]"
opts.on('-a [ARG]', '--argument_a [ARG]', "Specify the argument_a") do |v|
hash_options[:argument_a] = v
end
opts.on('-b [ARG]', '--argument_b [ARG]', "Specify the argument_b") do |v|
hash_options[:argument_b] = v
end
opts.on('--version', 'Display the version') do
puts "VERSION"
exit
end
opts.on('-h', '--help', 'Display this help') do
puts opts
exit
end
end.parse!
次に、あなたのアプリケーションが起動する必要があります。欲しいです。
Trollopは、フィーチャー、宣言型、コンパクトです。それは明らかに宝石として使用可能ですが、それは(比較的小さい)単一のファイルなので、いつでもあなたのプロジェクトにコピーすることができます。あなたはhttps://github.com/wycats/thor
:
## Usage: program [options]
## --verbose, -v Verbose mode
## --logfile=NAME Log filename
require 'easyoptions'
if EasyOptions.options[:verbose]
puts EasyOptions.options[:logfile]
puts EasyOptions.arguments[0]
end
http://whatisthor.comがより良いURLになるかもしれません。しかし、ええ、Thorの+1。 – webmat
EasyOptionsで利用できる宝石トールを使用することができます深刻なCLIアプリケーションは、コードの解析を必要としないため
require 'trollop'
opts = Trollop::options do
opt :monkey, "Use monkey mode" # flag --monkey, default false
opt :goat, "Use goat mode", :default => true # flag --goat, default true
opt :num_limbs, "Number of limbs", :default => 4 # integer --num-limbs <i>, default to 4
opt :num_thumbs, "Number of thumbs", :type => :int # integer --num-thumbs <i>, default nil
end
#=> {:monkey => false, :goat => true, :num_limbs => 4, :num_thumbs => nil}
ああ。ありがとう、私はこれらを見て、彼らは完璧だと思います。 OptionParserの場合は+1 – Misterbenn
+1 –