[英]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.