Сохранить значение в stdout из popen3 в Ruby - PullRequest
1 голос
/ 21 декабря 2011

Как сохранить строковое значение в stdout из следующего кода Ruby?

stdin, stdout, stderr = Open3.popen3('grep something test.txt')

Я могу отобразить значение следующим образом: stdout.gets. Однако, пытаясь сохранить значение следующим образом: s = stdout.gets просто устанавливает s в nil. Попытка сохранить значение следующим образом: s = stdout сохраняет что-то вроде "#<IO:0x1003abe10>" в s.

Ответы [ 2 ]

1 голос
/ 16 июня 2013

Open3.capture3 может быть тем, что вы хотите;он дает вам строки из STDOUT и STDERR и статус процесса:

outstr, errstr, status = Open3.capture3('/bin/command-here', param, param2)
logger.info 'output: ' + outstr + '; error: ' + errstr 
             + "; " return code: " + status.exitstatus.to_s
1 голос
/ 21 декабря 2011

output = stdout.read, кажется, работает.

...