加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何将控制台输出显示到stdout并将其存储在变量中?

发布时间:2020-12-16 22:56:39 所属栏目:百科 来源:网络整理
导读:如果我这样做: output = %x{some_script} …然后我将打印到stdout的东西存储在输出中;但我没有看到它出现在屏幕上. 另一方面,如果我这样做: success = system "some_script" …然后我看到输出出现在屏幕上,但我没有将它存储在变量中(成功只保留一个布尔值)
如果我这样做:
output = %x{some_script}

…然后我将打印到stdout的东西存储在输出中;但我没有看到它出现在屏幕上.

另一方面,如果我这样做:

success = system "some_script"

…然后我看到输出出现在屏幕上,但我没有将它存储在变量中(成功只保留一个布尔值).

有两种方法可以得到两者吗?我知道我可以这样做:

output = %x{some_script}
puts output

但问题是some_script可能是一个非常长时间运行的脚本,在这种情况下,直到整个事情完成后我才会看到任何内容.我更愿意看到它产生的输出,以及它完成时将它全部存储在输出变量中.

解决方法

这是IO.popen的解决方案:
require 'stringio'

output = StringIO.new

IO.popen("ls") do |pipe|
  pipe.each do |line|
    output.puts line
    puts line
  end
end

puts output.string # => Outputs the contents of `output` as a string

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读