2017-04-02 65 views
-1

我使用下面的ubuntu上,我的Ruby程序的代碼行:處理ARGF.read紅寶石

data=ARGF.read 

if data.length != 0 

     ..... 

end 

程序運行正常,當我作爲運行「貓file.txt的|紅寶石test.rb」但是,我無法處理以下問題:

  1. 以「cat | ruby​​ test.rb」身份運行時,程序進入無限循環。
  2. 當以「ruby test.rb」運行時,程序進入無限循環。
  3. 當作爲「cat file1.txt | ruby​​ test.rb」運行時,程序給出「cat:file1.txt:沒有這樣的文件或目錄」錯誤。

任何輸入將不勝感激。

+0

好吧,無法重現您的「無限」循環場景,但不是檢查數據長度,而是檢查數據存在('如果數據'而不是'如果data.length!= 0')。也許它會解決_some_問題。 –

+0

「以」cat file1.txt |「運行時ruby test.rb「,程序給出」cat:file1.txt:沒有這樣的文件或目錄「錯誤。」 - 好吧,你沒有'file1.txt',它是'貓'誰抱怨。你的腳本甚至沒有被觸及。 –

+0

謝謝@Sergio Tulentsev,我想處理貓抱怨。我怎樣才能做到這一點?我也試過如果數據但無濟於事。 – Timi

回答

1

我想你誤解了ARGF用於什麼。 ARGF.read給出作爲參數傳遞的所有文件的所有數據。

當你沒有給出任何輸入文件時,它正在等待你通過stdin給出輸入。因爲,你是在Ubuntu,你可以只按(控制 + d),這將結束該流,然後,你可以處理data正常。