2013-12-03 35 views
2

使用參數我需要通過一個Ruby腳本流數據,並會從我的終端一樣調用這個程序,以便:遍歷Ruby腳本流數據和ARGV

cat file.txt | ruby example.rb 

example.rb的代碼如下所示:

ARGF.each do |line| 
    #program logic 
end 

這個程序能正常工作,但現在我需要通過一個(或潛在更多)參數example.rb。我不能使用trollop或optparser(或任何此類性質)。我想我的參數傳遞給我的計劃是這樣的:

cat file.txt | ruby example.rb 2 

我試圖從argv數組提取它用在我的程序使用此參數:

x = ARGV.first 
puts x 

ARGF.each do |line| 
    #program logic 
end  

但現在的程序給出我這個錯誤:

No such file or directory - 2 

我好像ARGF使用現在使用的參數作爲我的標準輸入,我流給它的文件,而不是。我怎樣才能像這樣一起使用ARGV和ARGF?

回答

3

documentation

傳遞給腳本的參數都存儲在argv數組,每個元素一個參數。 ARGF假定任何非文件名的參數都已從ARGV中刪除。例如:

$ ruby argf.rb --verbose file1 file2 

ARGV #=> ["--verbose", "file1", "file2"] 
option = ARGV.shift #=> "--verbose" 
ARGV #=> ["file1", "file2"] 

您現在可以使用ARGF與這些命名的文件中的串聯工作。例如,ARGF.read將返回file1的內容後跟file2的內容。

+0

'ARGV.shift'解決了我的問題。謝謝! – DJElbow