2011-12-21 3 views
1

문자열 값을 다음 Ruby 코드의 stdout에 어떻게 저장할 수 있습니까? stdout.gets :루비의 popen3에서 stdout 값을 저장하십시오.

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

는이 같은 값을 표시 할 수 있습니다. 그러나이 값을 저장하려고 시도하면 s = stdout.getssnil으로 설정합니다. 다음과 같은 값을 저장하려고 시도 : s = stdout"#<IO:0x1003abe10>"과 같은 것을 s에 저장합니다.

+0

당신이'stout.gets'를 실행 한 후'S = stdout.gets'을 실행하려고 : 그것은 당신 STDOUT 및 STDERR에서 문자열 및 프로세스의 상태를 준다? – cyfdecyf

+0

나는 그렇게 생각하지 않는다. stdout에 값을 문자열로 저장하고 싶습니다. 다음으로 나는's.chomp ("\ n")' – SundayMonday

답변

1

output = stdout.read

+0

과 같은 것을 할 것입니다. 이상 하네. 'stdout.gets'를 사용하는 데 아무런 문제가 없습니다. – cyfdecyf

+1

'gets'는 현재 줄을 반환합니다. 그러나 파일의 끝에서'gets'는'nil'을 리턴합니다. 이것이 영업 이익이 '무이자'하는 이유입니다. 그것은 단지 데이터의 길이에 달려 있습니다. – Linuxios

1

Open3.capture3을 원할 수도 있습니다.

outstr, errstr, status = Open3.capture3('/bin/command-here', param, param2) 
logger.info 'output: ' + outstr + '; error: ' + errstr 
      + "; " return code: " + status.exitstatus.to_s 
관련 문제