我正在读取我的机器cpu load,但结果没有更新,第一个结果会不断显示。
#!/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%
即使负载在此期间发生了变化
答案 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%
答案 1 :(得分:2)
这是因为变量LOAD
仅被评估一次。
您可以将其转换为函数:
LOAD() { ps aux|awk 'NR > 0 { s +=$3 }; END {print s"%"}'; }
while true; do
LOAD
sleep 1
done