2010-04-29 40 views
12

我的Ruby腳本正在運行一個shell命令並解析它的輸出。但是,它似乎首先執行命令並將輸出保存在一個數組中。我希望能夠在打印時實時訪問輸​​出行。我玩過線程,但沒有得到它的工作。有什麼建議麼?Ruby能否像訪問shell命令一樣訪問輸出?

回答

21

您正在尋找。這裏有一個例子:

# This example runs the netstat command via a pipe 
# and processes the data in Ruby as it come back 

pipe = IO.popen("netstat 3") 
while (line = pipe.gets) 
    print line 
    print "and" 
end 
+0

優秀的答案,非常感謝! – Ciryon 2010-04-30 06:12:59

+0

輸出實際上是緩衝的,直到命令完成,然後你會看到輸出,如果你不關心實時性。 – user180574 2015-10-14 21:03:54

0

當調用方法/功能來運行系統/ shell命令解釋程序產生另一個進程來運行它,並等待它完成,然後給你的輸出。

即使你使用線程,你會做到的是不要讓你的程序同時運行命令掛起,但你仍然不會得到輸出,直到對其做的唯一的事情。

我認爲你可以做到與管道,但我不知道怎麼樣。

@Marcel得到它。