2014-02-05 3 views
1

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

var = exec('some command'); 

Это не работает так, как я хочу его, он просто печатает вывод из командной строки, а затем завершает программу. Так есть функция, которая не заканчивается программой, не печатает вывод cmd и сохраняет информацию в переменной?

Заранее спасибо.

ответ

4

Вы должны использовать либо рубин встроенный в синтаксисе кавычки или использовать %x

output = `some command` 

или

output = %x(some "command") 
+0

благодарственное это прекрасно работает! – user2974834

0

open3 предоставляет вам доступ к стандартному вводу, стандартному выводу, STDERR и нити ждать дочерний процесс при запуске другой программы. Вы можете указать различные атрибуты, перенаправления, текущий каталог и т. Д. Программы как Process.spawn.

См различные способы выполнения command

+0

Open3 имеет много возможностей, но прохождение через документацию заглушает творчество OPs. Используя ['capture2'] (http://www.omniref.com/ruby/HEAD/classes/Open3#.capture2), [' capture2e'] (http://www.omniref.com/ruby/HEAD/classes /Open3#.capture2e) или ['capture3'] (http://www.omniref.com/ruby/HEAD/classes/Open3#.capture3) были бы хорошими отправными точками, если не использовать обратные ссылки или'% x' не являются достаточно дружелюбный. –

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