Выполнение команды оболочки из Ruby: захват вывода при отображении вывода?

У меня проблема.

Я хочу запустить сценарий ruby ​​из другого сценария ruby ​​и записать его выводимую информацию, одновременно позволяя выводить его на экран.

runner

#!/usr/bin/env ruby
print "Enter your password: "
password = gets.chomp
puts "Here is your password: #{password}"

Файл сценария, который я запускаю:

start.rb

output = `runner`
puts output.match(/Here is your (password: .*)/).captures[0].to_s

Как вы видите, здесь есть проблема.

В первой строке start.rb экран пуст.

Я не вижу "Enter" ваш пароль: "в runner.

Есть ли способ отобразить вывод скрипта runner до его завершения, и все же позвольте мне записать его в строку, чтобы я мог обработать информацию, например, используя сопоставление, как в этом примере ?

5
задан never_had_a_name 15 September 2010 в 06:51
поделиться