質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

3279閲覧

Rubyのoptparseの使い方について

tomoyo

総合スコア31

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2015/02/02 23:00

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だけ取り出したい


このような場合どうすれば良いのでしょうか
分かる方がおられましたらご助言をいただけると嬉しいです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

回答ではありませんが、 ruby でのコマンドライン処理についての情報を紹介します。

この中でも紹介されている thor は、 rails でもつかわれています。
rails のコマンドラインのようなサブコマンドの形式を作れる機能を持っています。

投稿2015/02/04 14:50

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoyo

2015/02/08 14:18

返信が遅くなりました ありがとうございます.初めて見るライブラリでした. 頑張って使ってみようと思います.
guest

0

ベストアンサー

-aに続くファイル名が1つだけなら、opt.on('-a VAL')のように引数を取ることを明記すれば回収可能ですが、「次のオプションに出会うまでのものすべてに適用する」というのは、UNIX的にあまり例がないからか、一筋縄ではいかないようです。

投稿2015/02/03 00:07

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomoyo

2015/02/03 00:20

返信有難うございます. やはりパイプ処理で出力を繋げるなりしたほうが良さそうですね. 引数を配列としてみたり,getoptsというメソッドも使用してみたのですがあまりうまくいきませんでした. 自分もOptParseを触ってみて数日なのでおそらく見落としている点もあるかもしれません.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問