2011-03-24 51 views
7

如果我運行此代碼:確實%x []捕獲所有輸出?

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force ] 
puts 
puts " output is =#{svn_output}=" 

我得到這樣的結果

svn: Working copy '/Users/radek/Sites/db2.rft' locked 
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details) 

output is == 

但我想從變量svn_output內svn的錯誤消息。那可能嗎?

回答

11

你要標準錯誤重定向到標準輸出:

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force 2>&1] 
puts 
puts " output is =#{svn_output}=" 
+0

究竟:-)謝謝 – Radek 2011-03-24 04:44:59

+5

或用[open3](http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc /index.html),如果你需要區分'stdout'和'stderr'。 – 2011-03-24 04:52:25

+0

你打敗我吧! – Gishu 2011-03-24 04:53:19