Ruby从bash脚本执行中捕获stderr输出

jab*_*jab 5 ruby bash ruby-on-rails stderr

我现在可以stdout通过在bash中运行命令并将结果设置为我的字符串变量,重定向到ruby/rails中的字符串变量,如下所示.

val = %x[ #{cmd} ]
Run Code Online (Sandbox Code Playgroud)

where cmd是表示bash命令的字符串.

但是,这只捕获stdout,因为我想捕获stderr并将其设置为ruby中的字符串 - 任何想法?

kon*_*box 11

只需重定向它:

val = %x[ #{cmd} 2>&1 ]
Run Code Online (Sandbox Code Playgroud)

如果要仅从stderr捕获输出,请在将其复制到fd 2后关闭stdout的文件描述符.

val = %x[ #{cmd} 2>&1 >/dev/null ]
Run Code Online (Sandbox Code Playgroud)