我正在使用trollop解析命令行参数,我想在下面添加一些必需的位置参数,例如filename1filename2:

usage: my_script [--help] [--some-option VALUE] [--some-flag] filename1 filename2

如何用trollop做到这一点?

最佳答案

Trollop涉及解析选项-可能存在或可能不存在的东西。

必需的位置参数不是选项。要访问您的位置参数,只需查看argv。如果混合使用选项和必需的位置参数,则trollop将负责剥离可选内容,并使ARGV处于仅包含您关心的内容的状态。

如果运行此示例代码:

#!/usr/bin/env ruby

require 'trollop'

opts = Trollop::options do
  opt :monkey, "Use monkey mode"                    # flag --monkey, default false
  opt :name, "Monkey name", :type => :string        # string --name <s>, default nil
  opt :num_limbs, "Number of limbs", :default => 4  # integer --num-limbs <i>, default to 4
end

puts "opts: #{opts}"
puts "ARGV: #{ARGV}"

这是您将得到的:
[~/tbear/bin]$ ./t.rb
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false}
ARGV: []

[~/tbear/bin]$ ./t.rb arg1
opts: {:monkey=>false, :name=>nil, :num_limbs=>4, :help=>false}
ARGV: ["arg1"]

[~/tbear/bin]$ ./t.rb -m arg1
opts: {:monkey=>true, :name=>nil, :num_limbs=>4, :help=>false, :monkey_given=>true}
ARGV: ["arg1"]

请注意,示例2和示例3中的ARGV相同。

关于ruby - 如何使用trollop提出定论论证?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18477610/

10-14 06:55