%x []捕获所有输出吗?

Rad*_*dek 7 ruby

如果我运行此代码:

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force ]
puts
puts " output is  =#{svn_output}="
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果

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

 output is  ==
Run Code Online (Sandbox Code Playgroud)

但我想从变量中的svn发出错误消息svn_output.那可能吗?

yan*_*yan 12

您想将stderr重定向到stdout:

svn_output = %x[svn update /Users/radek/Sites/db2.rft -r 11105 --force 2>&1]
puts
puts " output is  =#{svn_output}="
Run Code Online (Sandbox Code Playgroud)

  • 或者如果你需要区分`stdout`和`stderr`,可以使用[open3](http://www.ruby-doc.org/stdlib/libdoc/open3/rdoc/index.html). (5认同)