Ruby OptionParser : 2 options, 1 个参数

标签 ruby parameters optionparser

我正在尝试使用 OptionParser 读取多个选项并让它们全部作用于单个文件名。 Ex: myprogram.rb -a -b file.txt 如何让 2 个选项共享一个强制参数,同时还允许 -h 之类的东西在没有参数的情况下运行?目前,上面的行只是让 -a-b 作为参数。

optionparser.on("-a FILENAME", "Do this") do |a|
  puts a
end
optionparser.on("-b FILENAME", "Do that") do |b|
  puts b
end

编辑:

它在做什么:

myprogram.rb -a -b file.txt
=> -b

我需要它做什么:

myprogram.rb -a -b file.txt
=> file.txt
=> file.txt

注意:

这些命令应该能够独立运行,也可以同时运行,类似于 ls -a ..ls -l ..ls -a - l .. 但是,如果没有给出文件名,则 NEITHER 命令应该有效。理想情况下,此解决方案应适用于任何 n 个选项。

最佳答案

我现在拥有的是:

alpha=false
beta=false
optionparser.on("-a", "Do this") do |a|
  alpha = a
end
optionparser.on("-b", "Do that") do |b|
  beta = b
end
if alpha
  #do something with ARGV[0]
end
if beta
  #do something with ARGV[0]
end

此代码假定在选择选项后,命令行上唯一剩下的应该是文件名。我觉得有一种更优雅的方法可以做到这一点,它考虑到其他可能使命令行困惑的事情,并允许对它们进行错误纠正。

关于Ruby OptionParser : 2 options, 1 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15813186/

相关文章:

Java Servlet/Jsp 图像上传以及表单值

mysql - 如何在IBM Datastage中的循环事件中使用参数?

javascript - 如果在js.erb中确认

ruby - 如何使用正则表达式在文本之间插入文本?

ruby win32ole MS Access : How to find all the records updated since last export?

c# - 将泛型传递给扩展方法

ruby - 在 ruby​​ 中使用 $ 和 ENV 访问环境变量

ruby - 如何在 Ruby 的 OptionParser 中只获得长选项?

python - 在同一 python 执行中多次调用 OptionParser.parse_args()

ruby - 为什么当我在命令行参数中使用 # 时此命令会失败?