2

OptionParser を使用して複数のオプションを読み込み、それらすべてを 1 つのファイル名で動作させようとしています。パラメータなしで実行Ex: myprogram.rb -a -b file.txtできるようにしながら、2 つのオプションで必須の引数を共有するにはどうすればよいですか? -h現在、上記の行はそのパラメーターとして-atakeを作成するだけです。-b

optionparser.on("-a FILENAME", "Do this") do |a|
  puts a
end
optionparser.on("-b FILENAME", "Do that") do |b|
  puts b
end

編集:

それが何をしているのか:

myprogram.rb -a -b file.txt
=> -b

私がする必要があること:

myprogram.rb -a -b file.txt
=> file.txt
=> file.txt

ノート:

ls -a ..これらのコマンドは、ls -l ..と同様に独立して同時に実行できる必要がls -a -l ..ありますが、ファイル名が指定されていない場合、どちらのコマンドも機能しないはずです。理想的には、このソリューションは任意のn個のオプションで機能するはずです。

4

1 に答える 1

0

私が今持っているものは次のとおりです。

alpha=false
beta=false
optionparser.on("-a", "Do this") do |a|
  alpha = a
end
optionparser.on("-b", "Do that") do |b|
  beta = b
end
if alpha
  #do something with ARGV[0]
end
if beta
  #do something with ARGV[0]
end

このコードは、オプションが使用された後、コマンド ラインに残るのはファイル名だけであることを前提としています。コマンドラインを混乱させる可能性のある他のことを考慮し、それらのエラー修正を可能にする、これを行うためのよりエレガントな方法があるように感じます。

于 2013-04-04T21:10:03.430 に答える