如何在Ruby脚本中要求两个可能的选项之一?

时间:2014-06-20 01:05:27

标签: ruby options

我正在尝试使用OptionParser在Ruby脚本中配置几个选项。我希望它们都是可选的,但要求至少使用一个。一个选项允许从命令行传递单个值。另一个选项将告诉脚本使用包含多个值的文件进行迭代。

这就是我能想到的所有内容:

options = {}

parser = OptionParser.new do |opts|
  opts.banner = "Usage: sat_server_delete.rb [options]"
  opts.on('-f', '--file file', 'File') do |file|
    options[:file] = file;
  end

  opts.on('-s', '--server server', 'Server') do |server|
    options[:server] = server
  end
end.parse!

我还没有弄清楚每个人都会使用的逻辑。现在,我很高兴看到一个错误,表明两者都没有提供。到目前为止,我没有得到那个。该脚本只是运行完成并返回提示符。

我查看OptionParser的{​​{3}},但我不清楚如何完成我正在尝试的内容。是否有可能选择任何一种情况?我甚至不确定我已经拥有的东西是否有意义。我基本上只是试图复制逻辑而不完全理解它在做什么。

1 个答案:

答案 0 :(得分:2)

您可以在options之后检查parse!哈希,如

if options[:file] && options[:server]
  puts "may have only one of -f and -s"
  exit
elsif !options[:file] && !options[:server]
  puts "must have at least one of -f and -s"
  exit
end