如何使用Ruby读取终端输出的最后一行并将其保存至变量
你可以参考以下两种常用的Ruby实现方案:
方案1:已有完整输出字符串时使用
如果已经将终端输出全部捕获存入了字符串变量,直接按换行拆分字符串取最后一位即可:
# 替换为你实际捕获到的终端输出变量 captured_output = <<~'EOF' >>>>>>>>>>>>>>>>>>>Connecting bucket<<<<<<<<<<<<<<<<<<<<<<<<< #<Aws::S3::Client:0x00000005219698> >>>>>>>>>>>>>>>>>>>Established Bucket Connetion <<<<<<<<<<<<<<<<<<<<<<<<<< No objects. EOF # 提取最后一行,strip用来去除行首尾的多余空白,不需要可以删掉 result = captured_output.split("\n").last.strip
执行后result变量的值就是No objects.。
方案2:执行命令时逐行读取(适合大输出场景)
如果终端输出内容很长,不需要存储全部输出内容,可以在执行命令时逐行读取,只保留最后一行内容,节省内存:
last_line = "" # 将引号内的内容替换为你实际执行的终端命令 IO.popen("你要执行的命令") do |io| io.each_line { |line| last_line = line } end result = last_line.strip
内容的提问来源于stack exchange,提问作者Miguel aguilera
相关产品推荐
相关产品推荐

