如果输入命令行参数,则运行特定版本的ruby脚本

时间:2017-11-21 15:56:09

标签: ruby argv optparse

我已经阅读了很多关于我的问题的变化,但我似乎无法找到一个与我想要做的事情完全匹配的。

我有一个基本上有两个版本的脚本:"默认"将运行一系列强制方法,第二个版本将运行相同的方法,然后使用一系列辅助方法。我希望从命令行(类似$ script.rb second_version)和"默认"触发第二个版本。根本没有参数输入触发的选项(因为它会更频繁地使用,所以只有$ script.rb)。

我用ARGV尝试了这个:

second_version = ARGV[0]

if second_version
   second_version_methods
else
  main_version
end

这在技术上有效,但问题是在main_version脚本中运行的第一个方法是需要用户输入的方法。最终发生的是字符串" second_version"会自动传递给该方法作为我不想要的值。

基本上,有没有办法让命令行参数指定以特定方式运行的条件,然后一旦完成,它就会丢弃输入?我已经研究过optparse,但它的功能似乎有点多余。

谢谢!

1 个答案:

答案 0 :(得分:1)

ARGV不是readonly,因此您可以使用第一个输入:

if ARGV[0] == 'second_version'
  ARGV.shift # removes the first element 
  second_version_methods
else
  main_version
end

如果你想保持ARGV完整(这是一个更好的主意),你可以这样做:

arguments = ARGV.dup

if arguments[0] == 'second_thing'
  arguments.shift
# ...