【发布时间】:2016-12-22 01:52:07
【问题描述】:
如果命令没有显示在标准输出中,如何捕获命令的输出并检查它的内容?例如:
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 保存到文件中并从该文件中读取以发现程序是否已更新。我认为这是最简单的方法。
【问题讨论】:
-
你想为你的方法写测试吗?
-
@sagarpandya82 不,我正在尝试为我编写的程序获取更新方法,并希望捕获 git 本身的输出。我只是不知道是否可以将输出写入文件