外部命令如何将其输出和退出状态返回给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
。
上一篇: How can an external command return both its output and its exit status to Ruby?