2016-02-05 2 views
3

Я понимаю, что я могу делать простые вещи, как System.cmd("echo", ["hello"]), но предположим, что я хотел сделать что-то вроде запустить процесс РубиВыполнение системных вызовов с опциональными

Обычно в оболочке я мог бы сделать что-то вроде: ruby -e 'puts "hello world"

I «пробовал кучу вариаций нечто похожее на:

System.cmd("ruby", ["-e", "'puts \"hello world\"'"]) без особой удачи

я могу позвонить вниз модуль Erlang os , Но это не кажется идеальным, как мне нужно, чтобы явно разделить мои строки в символы и переделке его, а также выяснить, как захватить код выхода в дополнение к результату

ответ

4
System.cmd("ruby", ["-e", "puts \"hello world\""]) 

, кажется, работает :)

+0

О, боже, часы, потраченные на то, чтобы выяснить, кавычки будут добавлены для меня. Благодаря! –

+1

System.cmd гораздо больше похож на exec, чем рубиновая версия. Он никогда не проходит через оболочку, поэтому вам не нужно делать цитату из командной строки. Это хорошо и плохо. Вы не можете перенаправлять I/O, но это немного более безопасно. –

+0

Спасибо, приятно знать! –

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