我正在使用trollop来解析命令行参数,我想添加一些必需的位置参数filename1
,filename2
如下所示:
usage: my_script [--help] [--some-option VALUE] [--some-flag] filename1 filename2
Run Code Online (Sandbox Code Playgroud)
我如何用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}"
Run Code Online (Sandbox Code Playgroud)
您将得到以下结果:
[~/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"]
Run Code Online (Sandbox Code Playgroud)
请注意示例 2 和示例 3 中的 ARGV 是如何相同的。