2011-03-24 60 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