我正在阅读我的机器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