2009-11-13 56 views
3
ruby somescript.rb somehugelonglistoftextforprocessing 

這是一個壞主意嗎?相反,我應該創建一個單獨的平面文件包含somehugelonglistoftextforprocessing,並讓somescript.rb閱讀它?將相當大的參數傳遞給ruby腳本,有問題嗎?

如果腳本參數是非常非常長的文本(1KB〜300KB),它有關係嗎?如果有的話,會出現什麼問題。

回答

6

只要你的命令行處理代碼的限制(例如,bashruby本身)都沒有超過,你應該有這樣做沒有技術問題。

是否是想法是另一回事。你真的想每次運行你的程序時都要輸入幾百千字節?如果包含空格,您是否想要記住在數據中加入引號?

有許多的方法,我已經看到了這個處理,你可能要考慮(這個列表是沒有窮盡):

  • 更改您的代碼,這樣,如果沒有參數,從標準輸入讀取的信息 - 這將讓你做任何
          ruby somescript.rb myData

          ruby somescript.rb <myFile.txt

  • 使用特殊字符來表示文件輸入(我已經看到@以這種方式使用)。所以,
          ruby somescript.rb myData
    將使用命令行中提供的數據,同時
          ruby somescript.rb @myFile.txt
    會從文件中獲取數據。

我的建議是對數據大小使用基於文件的方法,並允許在指定的情況下使用參數。這包括兩種可能的情況:

  • 很多數據,把它放在一個文件,所以你不必每次你想運行你的命令重新輸入它。
  • 沒有太多的數據,允許它作爲參數傳遞,以便您不必爲在命令行中鍵入的內容創建文件。
+0

我第二個paxdiablo的建議。在[另一個SO線程](http://stackoverflow.com/questions/273262/best-practices-with-stdin-in-ruby)上有關於這種方法的一些很好的討論可能有用 – 2009-11-13 11:59:55