Rubyのスクリプトでオプションにより処理を変えたいと考えOptparserというライブラリを使用して実装を行っています.
そのとき,ファイル入力にワイルドカードを指定した際にARGVにすべてのファイルが保存されているのはわかったのですが,このままだと続けて他のオプションを指定した際にすべての引数がARGVに保存されてしまいます.
#ソースコード opt.rb
require 'optparse'
require "rexml/document"
require 'pp'
OptionParser.new do |opt|
$aaa
$bbb
opt.on('-a'){ $aaa = true }
opt.on('-b'){ $bbb = true }
opt.parse!(ARGV)
end
if $aaa then
pp ARGV
end
if $bbb then
pp ARGV
end
出力結果
$ ruby opt.rb -a hoge
["hoge"]
$ ruby opt.rb -a *.rb
["foo.rb",
"bar.rb",
"baz.rb"]
$ ruby opt.rb -a *.rb -b hoge
["foo.rb",
"bar.rb",
"baz.rb",
"hoge"] <-ここのhogeを含まないように取り出したい
["foo.rb",
"bar.rb",
"baz.rb",
"hoge"] <-ここのhogeだけ取り出したい
このような場合どうすれば良いのでしょうか
分かる方がおられましたらご助言をいただけると嬉しいです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/08 14:18