2013-11-25 47 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 
相关问题