出力をstderrにスローするコマンドの出力に対して、Rubyで「puts」がどのように機能するかは明確ではありません。
このコードを見てください:
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 を使用する必要があることを認識しています)
私の質問: 実際には変数「結果」は空ですが、最初の puts は stderr 出力を出力し、2 番目の puts は stdout (空です) を出力します。なんで?どうしたの?