这是关于ruby system command check exit code的后续问题。我想运行命令,以获取其输出以及退出代码。目前我在代码中使用的是:
rv = `#{cmd} 2>&1`
但这仅捕获输出,
rv = system(cmd)
仅捕获退出代码。如何实现两者?
答案 0 :(得分:6)
检查$?.exitstatus
是否有退出代码。
有关详细信息,请参阅http://www.ruby-doc.org/core-2.1.0/Process/Status.html
答案 1 :(得分:3)
反引号将捕获命令的输出。例如,要将输出存储在 rv 变量中:
rv = `echo Error: EX_USAGE; exit 64`
#=> "Error: EX_USAGE\n"
您可以从内置的 $?变量或exit status对象中查询流程的Process::Status。例如,要获取最后一个反引号命令的退出状态:
$?.exitstatus
#=> 64
答案 2 :(得分:1)
$?
访问上次系统执行命令的状态 使用反引号,system()或%{}。然后,您可以访问exitstatus 和pid属性。
因此,您可以执行rv = system(cmd)
,并执行status = $?.exitstatus
。