Проблема в том, что %x()
в основном передает строку в оболочку для разбора, поэтому вам придется избегать всего, что может интерпретировать оболочка. Таким образом, %x
в значительной степени находится за окном, если вам нужно иметь дело с чем-то, что вы сами не создали (и событие, то это подозрительно).
Одним из решений является использование Open3.capture3 :
out, err, status = Open3.capture3('/bin/ls', dir)
, а затем обрабатывает стандартный вывод (out
) и возвращает стандартную ошибку (err
) при необходимости. В Open3 есть еще несколько вещей, которые могут лучше удовлетворить ваши потребности.