我已经用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(“写你的东西在这里”)}' –