我正在尝试使用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}},但我不清楚如何完成我正在尝试的内容。是否有可能选择任何一种情况?我甚至不确定我已经拥有的东西是否有意义。我基本上只是试图复制逻辑而不完全理解它在做什么。
答案 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