我想將sox
命令的統計信息分配給一個ruby變量。當使用system
時,根據命令的成功,我得到「真/假」。所以,我已經試過:Ruby從系統命令返回(sox)
%x{ sox file -n stats }
這說明統計在我的控制檯,但實際上返回一個空字符串,像這樣:
Stat: 123
Another stat: 234
""
我想獲得一個包含統計數據的字符串。這可能嗎?
我想將sox
命令的統計信息分配給一個ruby變量。當使用system
時,根據命令的成功,我得到「真/假」。所以,我已經試過:Ruby從系統命令返回(sox)
%x{ sox file -n stats }
這說明統計在我的控制檯,但實際上返回一個空字符串,像這樣:
Stat: 123
Another stat: 234
""
我想獲得一個包含統計數據的字符串。這可能嗎?
使用反勾:
result = `sox file -n stats`
確保SOX不輸出到STDERR。在這種情況下重定向。
result = `sox file -n stats 2>&1`
編輯 返回蜱%x{}
是相同的。抱歉。我把它與system
混合起來。重定向很可能是你需要的。
這是一樣的。從[docs](http://ruby-doc.org/core-2.0/Kernel.html#method-i-60):*內置語法'%x {...}'使用此方法。 * – Stefan 2013-05-08 17:07:02
@Stefan對。我認爲它歸結爲'system'。 – 2013-05-08 17:10:53
@Stefan感謝您指出這一點。 – 2013-05-08 17:16:54
所以最後你想''123456'在你的ruby var? – 2013-05-08 17:00:34
'%x {...}'將捕獲子shell的stdout並將其作爲字符串返回。如果您在控制檯上看到輸出,但沒有收到回執,很可能程序正在寫入stderr而不是stdout。嘗試:'%x {sox file -n stats 2>&1}'將stdout和stderr都指向stdout。 – dbenhur 2013-05-08 17:07:19