gpt4 book ai didi

ruby - 如何在不在标准输出中显示的情况下捕获命令的输出

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:03 24 4
gpt4 key购买 nike

如果命令不显示在标准输出中,我如何捕获命令的输出并检查其内容?例如:

  def update!
`git pull origin master`
if $?.exitstatus > 0
puts 'Failed to update'
elsif $?.success?
puts 'Upgraded successfully'
else
puts 'Already up to date'
end
end

我如何捕获此命令的输出以检查命令是否显示 up-to-date、发生错误或成功更新?有没有办法将输出写入文件而不是控制台?


更新答案:

def update!
update_status = `git pull origin master 2>&1`
if $?.exitstatus > 0
puts 'error'
elsif update_status =~ /Already up-to date/
puts 'same version as origin master'
else
puts 'updated'
end
end

此输出将始终是:

[06:44:29 INFO] Updating to newest version..
updated

即使版本与出处相同。如果可能的话,我想做的是将命令的 stdout 保存到一个文件中,然后从该文件中读取以发现程序是否已更新。我认为这是最简单的方法。

最佳答案

您可以将命令的输出分配给一个字符串。

使用 2>&1 将 stderr 重定向到 stdout,从而捕获所有输出。

str = `git pull origin master 2>&1`
if $?.exitstatus > 0
...
elsif str =~ /up-to-date/
...
else
...
end

关于ruby - 如何在不在标准输出中显示的情况下捕获命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41274671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com