外部命令如何将其输出和退出状态返回给Ruby?

这是关于ruby系统命令检查退出代码的后续问题。 我想运行命令以获取其输出以及退出代码。 目前我在代码中使用的是:

rv = `#{cmd} 2>&1`

但这只能捕捉输出,而且

rv = system(cmd)

仅捕获退出代码。 如何实现两者?


检查退出代码的$?.exitstatus

欲了解更多信息,请参阅http://www.ruby-doc.org/core-2.1.0/Process/Status.html


反引号将捕获命令的输出。 例如,要将输出存储在rv变量中:

rv = `echo Error: EX_USAGE; exit 64`
#=> "Error: EX_USAGEn"

你可以通过内置的$?查询进程的退出状态。 变量或来自Process :: Status对象。 例如,要获取最后一个backtick命令的退出状态:

$?.exitstatus
#=> 64

$? 如果使用反引号system()或%{},则访问上次执行的系统命令的状态。 然后可以访问exitstatus和pid属性。

资源

所以你可以做rv = system(cmd) ,并执行status = $?.exitstatus

链接地址: http://www.djcxy.com/p/25301.html

上一篇: How can an external command return both its output and its exit status to Ruby?

下一篇: Run linux command in ruby