bash脚本输出未更新



我正在阅读我的机器CPU加载,但是结果未更新,第一个结果不断显示。

#!/bin/bash
LOAD=$(ps aux|awk 'NR > 0 { s +=$3 }; END {print s"%"}')
(while true; do
echo "$LOAD"
sleep 1
done)

这返回

0.3%
0.3%
0.3%
0.3%
0.3%

即使在此期间负载发生了变化

您仅一次计算LOAD值一次,然后永远打印该值。相反,您必须计算while循环内的值:

#!/bin/bash
while true; do
   LOAD=$(ps aux|awk 'NR > 0 { s +=$3 }; END {print s"%"}')
   echo "$LOAD"
   sleep 1
done

测试

$ ./a
81.2%
81.2%
81.1%

这是因为仅评估变量LOAD一次。

您可以将其转换为功能:

LOAD() { ps aux|awk 'NR > 0 { s +=$3 }; END {print s"%"}'; }
while true; do
  LOAD
  sleep 1
done

相关内容

  • 没有找到相关文章

最新更新