Ruby命令不返回预期值

时间:2015-11-02 10:01:12

标签: ruby command

在我的redhat 5 RoR中,我有一个命令调用jar来从另一个系统中提取xml。 IRB:

2.1.5 :005 >  %x(java -jar ./GENTESTResult.jar -action=status -user="tester" -password="tester" -job_id="12324")
<?xml version="1.0"?><cliout action="status" request_id="1446456310693_54" >
<action_status>ERROR</action_status>
<action_status_detail>Given job not found.</action_status_detail><job id="12324"/>
</cliout>
 => "" 

2.1.5 :006 > %x(java -jar ./GENTESTResult.jar -action=status -user="tester" -password="tester" -job_id="5192782")
 => "<?xml version=\"1.0\"?><cliout action=\"status\" request_id=\"1446456368168_11\" >\n<action_status>SUCCESS</action_status><action_status_detail>Job has been processed successfully.</action_status_detail><job id=\"5192782\" status=\"Failed\" >\n...(stop paste)

第一个作业ID“12324”不存在。第二个作业ID 5192782是一个有效的ID。 我对工作没有疑问5192782。 但对于工作“12324”,我的红宝石代码

@lines = %x(java -jar ./GENTESTResult.jar -action=status -user="tester" -password="tester" -job_id="12324")

给了我空字符串。但我真的需要从结果键部分

的xml
<?xml version="1.0"?><cliout action="status" request_id="1446456310693_54" >
    <action_status>ERROR</action_status>
    <action_status_detail>Given job not found.</action_status_detail><job id="12324"/>
    </cliout>

我怎样才能获得字符串?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您没有抓住输出,因为它正在stderr上打印。

http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html是一篇关于这个主题的综合博客文章,您可能希望特别关注popen3和popen2e