繁体   English   中英

bash脚本输出未更新

[英]bash script output not updating

我正在读取计算机的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM