Как очистить команду оболочки и получить вывод в Ruby? - PullRequest
2 голосов
/ 20 марта 2011

Я должен выполнить несколько команд оболочки, где пользователь дает ввод.Я нашел один способ, который казался безопасным: system *%W(ls #{file}) [здесь] .

Мне нужно получить вывод этой команды, поэтому я не могу просто использовать system.Есть ли способ дезинфицировать команду для обратных кавычек `` или для %x[]?

Ответы [ 2 ]

3 голосов
/ 20 марта 2011

Вы хотите IO::popen вместо system.Вы все еще можете передать массив строк, чтобы вызвать команду без оболочки, и вы можете read из полученного объекта ввода-вывода.

Если вы тоже хотите прочитать stderr, используйте open3* модуль 1010 * вместо ввода-вывода.

0 голосов
/ 20 марта 2011

Какие команды оболочки вы запускаете, которые Ruby не может поддерживать? Если вы перечисляете файлы, используйте Dir

...