2013-07-02 5 views
1

script.shрубин выход сценарий оболочки в реальном времени

echo First! 
sleep 5 
echo Second! 
sleep 5 
echo Third! 

another_script.rb

%x[./script.sh] 

Я хочу another_script.rb для печати выход script.sh, как Бывает. Это означает, что вы печатаете «Сначала!», Ожидая пять секунд, печатая «Second!», Ожидая 5 секунд и т. Д.

Я прочитал различные способы запуска внешнего скрипта в Ruby, но ни один из них не выглядит . сделать это Как я могу выполнить мои требования

ответ

1

вы всегда можете выполнить это в Рубине:

system("sh", "script.sh") 

Примечание важно указать, как выполнить это, если у вас нет надлежащего #!/bin/sh заголовка, а также выполнить бит

+0

Сценарий имеет правильную бах. 'system" ./script.sh "' производит те же результаты, что и '% s [./ script.sh]'. Я хочу распечатать вывод сценария в реальном времени, как это происходит, а не выводить вывод сценария в качестве возвращаемого значения. –

+0

Для меня он запускает ваш скрипт и показывает результат правильно. Вы хотите захватить вывод скрипта и обработать его с помощью Ruby? Если это так, вам нужно использовать ['popen3'] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open3/rdoc/Open3.html#method-c-popen3). – tadman

+0

Хмм, какая версия Ruby вы используете? –

Смежные вопросы