如何将Ruby程序的输出重定向到某个文件

Mil*_*lan 2 ruby

我有以下代码:

puts "amit"
puts "ravi"
Run Code Online (Sandbox Code Playgroud)

它输出:

amit
ravi
Run Code Online (Sandbox Code Playgroud)

我想将amit重定向到一个文件,将ravi重定向到另一个文件.

假设我的文件名是name.rb.当我尝试的时候

system("name.rb > #{@filename}")
Run Code Online (Sandbox Code Playgroud)

这两个阿米特拉维被重定向到@FileName但我想重定向到不同的文件或首先它会重定向到两个同名的文件,但在一个文件输出阿米特和相同的输出的另一个文件是拉维.

Gab*_*ami 5

您可以更改$ stdout和$ stderr的目标:

stout = File.open(ARGV[0], 'w')
sterr = File.open(ARGV[1], 'w')

$stdout.reopen(stout)
$stderr.reopen(sterr)

puts "something"
$stderr.puts "something another"
Run Code Online (Sandbox Code Playgroud)