2013-11-25 46 views
0

我已經用ruby編寫了一個程序。輸出相當長,幾千行。如何將ruby函數的輸出打印到文件中

有沒有一種方法可以將此輸出寫入文件而不是在shell中,因爲shell允許您只能向上滾動到某個點?我知道我可以用file.puts代替puts。但是,我想知道是否有一個命令可以在不改變程序的情況下實現這一點。對於shell腳本,我們可以做script.sh > output.txt。對於shell命令也是如此。但是一個紅寶石程序呢?它似乎沒有工作。

+0

這應該做到這一點。它怎麼不起作用? – screenmutt

+1

您可以更改'$ stdout'的值。 'puts'使用'$ stdout',而不是'STDOUT' ...但我不確定你要求什麼...... –

+0

使用這個'File.open(「out.txt」,'OPTION'){ | F | f.write(「寫你的東西在這裏」)}' –

回答

2

問題是./program.rb > output.txt重定向輸出以及輸入文本文件的提示,所以你看不到你在做什麼。你有幾種選擇:

  1. 使用STDERR.puts提示輸入,所以它不會被重定向捕獲。這是我首選的方法。
  2. 使用ARGV將輸入傳遞到您的程序。如果您認爲該程序在沒有提示的情況下使用起來不太困難,這是一個不錯的選擇。
  3. 使用File.open創建輸出文件並直接寫入。有時候這是最明智的選擇,但通常你想做前兩項中的一項。
0

這個工作對一個簡單的放輸出:

foo.rb:

foo = gets.chomp 
puts "Input was: " + foo 

終端:

ruby foo.rb > test.txt 
+2

您的程序需要接受用戶輸入,請參閱評論。 – screenmutt

0

如果程序要求輸入,也許你可以改變你的計劃接受來自命令行(ARGV [0]等)的輸入,然後將輸出重定向到一個文件:

ruby myprogram > out.txt 
相關問題