Ruby optparse-如何使用optparse获取(OptionParser :: InvalidArgument)将空字符串传递给命令行

问题描述 投票:1回答:1

我正在尝试编写一个脚本,该脚本获得一些参数,其中一些参数可能为空。

似乎红宝石解析器不允许这样做并抛出(OptionParser :: InvalidArgument)

代码:

require 'optparse'

options = {}
OptionParser.new do |opt|

  opt.on('--might_be_empty might_be_empty', String) { |o| options[:might_be_empty] = o }

end.parse!

puts "might_be_empty: #{options[:might_be_empty]}"

快乐流:

ruby ./for_stack.rb --might_be_empty "some_real_data"
might_be_empty: some_real_data

当值为空时:

ruby ./for_stack.rb --might_be_empty ""
./for_stack.rb:10:in `<main>': invalid argument: --might_be_empty  (OptionParser::InvalidArgument)

我如何告诉OptionParser允许空字符串?

ruby
1个回答
0
投票

使用Object代替String

opt.on('--might_be_empty might_be_empty', Object) { ... }

测试:

ruby ./for_stack.rb --might_be_empty "some_real_data"
might_be_empty: some_real_data

ruby ./for_stack.rb --might_be_empty ""
might_be_empty: 
© www.soinside.com 2019 - 2024. All rights reserved.