当输出可用时,如何连续输出长时间运行的shell命令的结果?
目前我需要这样做(我只能在命令完成后看到)
放
long_running_shell_command
我想在概念上做什么
puts_immediately
long_running_shell_command
答案 0 :(得分:0)
将输出重定向到STDOUT
:
# waits a second, prints the current directory's contents, waits 5 seconds
system('sleep 1; ls; sleep 5', out: STDOUT)
答案 1 :(得分:0)
我最喜欢使用shell命令的方式是这样的:
Open3.popen3 "shellcommand --args --more-args" do |stdin, stdout, stderr, thread|
while line = stdout.gets
puts line
end
end
该命令为您提供输入,输出和错误流。如果您真的想要立即,可以拨打stdout.gets
以获取下一行输出(我最喜欢的),或stdout.getc
作为下一个字符。该函数等待输入可用,然后在命令完成时返回nil
,因此常见的技术是将命令包装在while循环中并重复执行一组命令直到命令完成。