使用tee命令打印的垃圾字符

时间:2015-10-30 00:08:43

标签: linux bash awk grep

脚本I'利用如下:

#!/bin/bash

lla=$(top -n 1 | grep "load average" | awk '{print $13,$14,$15}')
mem_usage=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
now=`date`
cur_time=$(echo $now | awk '{print $4}')

for i in {1..60}
do
        echo "System Performance Statistics at: "$cur_time | tee -a hp.txt
        echo "Linux Load Average: "$lla | tee -a hp.txt
        echo "Memory Usage: "$mem_usage | tee -a hp.txt
        echo "" | tee -a hp.txt

        sleep 3
done

结果:

System Performance Statistics at: 19:00:29
Linux Load Average: 0.13, 0.11, 0.14^[(B^[[m^[[39;49m^[[K
Memory Usage: 82.7672

标准输出根本不显示任何垃圾字符。我需要改变什么?

1 个答案:

答案 0 :(得分:4)

在top命令中添加-b,它可以正常工作。

来自man top

  

-b :批量模式操作

     

在批处理模式下启动,这对于发送输出非常有用   从顶部到其他程序或文件。在这种模式下,top不会   接受输入并运行,直到迭代限制你设置为   `-n'命令行选项或直到被杀死。