簡體   English   中英

如果輸入命令行參數,則運行特定版本的ruby腳本

[英]run specific version of ruby script if command line argument is entered

我已經閱讀了很多有關問題的變體,但是似乎找不到與我要嘗試做的事情完全匹配的問題。

我有一個基本上具有兩個版本的腳本:“默認”將通過一系列強制性方法運行,第二個版本將通過這些相同的方法運行,然后使用一系列輔助方法。 我希望從命令行中觸發第二個版本(類似於$ script.rb second_version ),而“ default”選項則$ 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,但是為此目的,它的功能似乎有些多余。

謝謝!

ARGV不是只讀的,因此您可以像這樣使用第一個輸入:

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
# ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM