Ruby 命令不是 return 预期值

Ruby Command not return expected value

在我的 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”,我的 ruby 代码

@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>

如何获取字符串?提前谢谢你。

您没有捕捉到输出,因为它正在 stderr 上打印。

http://blog.bigbinary.com/2012/10/18/backtick-system-exec-in-ruby.html 是一篇关于该主题的综合性博客 post,您可能特别想看看 popen3 和 popen2e