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

8

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

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

但是这只能捕获输出,而且

rv = system(cmd)

只捕获退出代码。如何实现两者兼备?

3个回答

7

3

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

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

你可以从内置的$?变量或Process::Status对象中查询进程的退出状态。例如,要获取最后一个反引号命令的退出状态:
$?.exitstatus
#=> 64

1

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

来源

因此,您可以执行 rv = system(cmd),并执行 status = $?.exitstatus


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接