【发布时间】:2015-08-14 00:19:05
【问题描述】:
我不清楚“puts”如何在 Ruby 中用于将其输出抛出到 stderr 的命令的输出。
看这段代码:
command="/usr/bin/java -version"
result=`#{command}`
puts result
puts "XX#{result}XX"
结果是:
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
XXXX
java -version 将其输出发送到 stderr(我知道为了防止这种情况,我应该在命令末尾使用 2>&1)
我的问题:变量“result”实际上是空的,但是第一个 puts 打印 stderr 输出,第二个 put 打印 stdout(它是空的)。为什么?怎么回事?
【问题讨论】:
-
反引号仍然运行命令并打印其输出。 capture,即反引号的返回,是标准输出。
标签: ruby variables stderr puts