我从bash shell脚本调用ruby,比如
#!/bin/bash
# lots of stuff
ruby script.rb
# more stuff
我希望ruby脚本中的print
能够在stdout中显示shell脚本,但它们并不是。奇怪的是,无论我在上使用p
做什么都会出现。如何才能使print
工作?
快速回答:使用puts
。
答案 0 :(得分:5)
我的猜测是这与STDOUT缓冲有关。 p
立即刷新缓冲区,而print
则不会。使用puts
代替,也可以刷新,或者您可以将STDOUT设置为始终使用以下内容进行全局刷新:
$stdout.sync = true
根据具体情况,您可以随时致电flush
:
print ...
print ...
print ...
$stdout.flush