在bash中,除法结果为“0”,但分子和分母的值应导致不同的结果
我正在尝试使用下面的代码查找我的android应用程序的平均CPU利用率在bash中,除法结果为“0”,但分子和分母的值应导致不同的结果,bash,shell,Bash,Shell,我正在尝试使用下面的代码查找我的android应用程序的平均CPU利用率 #!/bin/bash counter=1 while [ $counter -le 10 ] do current_cpu=$(adb shell top -n 1 | grep org.carleton.iot.mobile_cep | awk '{print $5}' | sed 's|%||g') echo "current_cpu = "$current_cpu
#!/bin/bash
counter=1
while [ $counter -le 10 ]
do
current_cpu=$(adb shell top -n 1 | grep org.carleton.iot.mobile_cep | awk '{print $5}' | sed 's|%||g')
echo "current_cpu = "$current_cpu
total_cpu=$((total_cpu + current_cpu))
echo "total_cpu = "$total_cpu
echo "counter = "$counter
average_cpu=$(((totalMemory / counter)))
echo "average_cpu = "$average_cpu
echo "\n"
((counter++))
sleep 1
done
echo done
它给出了以下结果
current_cpu = 7
total_cpu = 7
counter = 1
average_cpu = 0
current_cpu = 8
total_cpu = 15
counter = 2
average_cpu = 0
current_cpu = 6
total_cpu = 21
counter = 3
average_cpu = 0
current_cpu = 8
total_cpu = 29
counter = 4
average_cpu = 0
但是,average_cpu的值应该等于total_cpu/计数器值。当结果不是整数时,Bash除法不起作用,您必须使用scale和bc作为
echo "scale=2 ; $totalmemory / $counter" | bc
这里的刻度值是精度,如果它是2,它将返回小数点后2位的值,比如.55这是一个简单的输入错误:$totalMemory/计数器为零,因为totalMemory未设置。你的意思是写总cpu。这就是说,你应该关注安德里亚·科尔贝里尼的链接来学习更好的方法。@ruakh:天哪,我的错。你是对的,boss和bc只是为了好玩,echo totalMemory:$totalMemory before\u cpu=$totalMemory/计数器来验证它是否真的包含了你认为它的功能。或者bc-l-1,对不起。除法很好:它四舍五入,但当正确答案大于1时,它不会随机给零。你说的随机给是什么意思zero@crack_iT当前位置我的意思是,阅读问题。你肯定不相信29/4的子弹一直到零?