我已經用ruby編寫了一個程序。輸出相當長,幾千行。如何將ruby函數的輸出打印到文件中
有沒有一種方法可以將此輸出寫入文件而不是在shell中,因爲shell允許您只能向上滾動到某個點?我知道我可以用file.puts
代替puts
。但是,我想知道是否有一個命令可以在不改變程序的情況下實現這一點。對於shell腳本,我們可以做script.sh > output.txt
。對於shell命令也是如此。但是一個紅寶石程序呢?它似乎沒有工作。
我已經用ruby編寫了一個程序。輸出相當長,幾千行。如何將ruby函數的輸出打印到文件中
有沒有一種方法可以將此輸出寫入文件而不是在shell中,因爲shell允許您只能向上滾動到某個點?我知道我可以用file.puts
代替puts
。但是,我想知道是否有一個命令可以在不改變程序的情況下實現這一點。對於shell腳本,我們可以做script.sh > output.txt
。對於shell命令也是如此。但是一個紅寶石程序呢?它似乎沒有工作。
問題是./program.rb > output.txt
重定向輸出以及輸入文本文件的提示,所以你看不到你在做什麼。你有幾種選擇:
STDERR.puts
提示輸入,所以它不會被重定向捕獲。這是我首選的方法。ARGV
將輸入傳遞到您的程序。如果您認爲該程序在沒有提示的情況下使用起來不太困難,這是一個不錯的選擇。File.open
創建輸出文件並直接寫入。有時候這是最明智的選擇,但通常你想做前兩項中的一項。這個工作對一個簡單的放輸出:
foo.rb:
foo = gets.chomp
puts "Input was: " + foo
終端:
ruby foo.rb > test.txt
您的程序需要接受用戶輸入,請參閱評論。 – screenmutt
如果程序要求輸入,也許你可以改變你的計劃接受來自命令行(ARGV [0]等)的輸入,然後將輸出重定向到一個文件:
ruby myprogram > out.txt
這應該做到這一點。它怎麼不起作用? – screenmutt
您可以更改'$ stdout'的值。 'puts'使用'$ stdout',而不是'STDOUT' ...但我不確定你要求什麼...... –
使用這個'File.open(「out.txt」,'OPTION'){ | F | f.write(「寫你的東西在這裏」)}' –