Мне непонятно, как в 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 в конце команды)
Мой вопрос: переменная «результат» на самом деле пуста, но первая выводит вывод stderr, а вторая выводит стандартный вывод (который пуст). Почему? В чем дело?