2011-12-21 8 views
1

はどのようにして、次のRubyコードからstdout内の文字列値を格納することができますか? stdout.getsストア値は

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

は、私はこのような値を表示することができます。しかし、このような値を格納しようとすると、s = stdout.getssnilに設定します。このような値を格納しようとするとs = stdout"#<IO:0x1003abe10>"のようなものをsに格納します。

+0

あなたは 'stout.gets'を実行した後に、' S = stdout.gets'を実行しようとしていますか? – cyfdecyf

+0

私はそうは思わない。 stdoutの値を文字列に格納したいだけです。次に、 's.chomp(" \ n ")' – SundayMonday

答えて

1

output = stdout.readと思われます。

+0

のようなことをします。それは変です。 'stdout.gets'を使っても問題はありません。 – cyfdecyf

+1

'gets'は現在の行を返します。しかし、ファイルの終わりに 'gets'は' nil'を返します。そういうわけでOPは「無」になっている。それはちょうどデータの長さに依存します。 – Linuxios

1

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