Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在bash中,除法结果为“0”,但分子和分母的值应导致不同的结果_Bash_Shell - Fatal编程技术网

在bash中,除法结果为“0”,但分子和分母的值应导致不同的结果

在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

我正在尝试使用下面的代码查找我的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
        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的子弹一直到零?