1

我所说的 tail 是在它运行时捕获命令输出,而不是在执行结束时获取它。例如,如果您执行一个长时间运行的命令,它将如下所示:

# Run command
puts `ey deploy`
# Nothing happening for a while....
# ...
# Now see all of the output at once.

我想做的是通过 ruby​​ 运行一个命令,并在它发生时查看它的输出。

4

1 回答 1

2

如您所见,反引号将等待整个命令完成,然后将其输出作为单个字符串返回。要获得生成的输出,请尝试Open3::popen2e

这是一个使用 bash 循环的示例,该循环在每行之间休眠一秒钟,以演示此接口的增量流性质:

require 'open3'

CMD = %{for ((i=0; i<4; i++)); do echo $i; sleep 1; done}

Open3.popen2e('bash', '-c', CMD) do |i,oe,t|
  oe.each { |line| puts line }
end
于 2013-03-06T04:52:00.453 回答