bash计算平均返回错误答案

bash计算平均返回错误答案,bash,echo,average,Bash,Echo,Average,我有一个脚本: #!/bin/bash mark=10+10 nb=2 echo $mark echo $(($mark/$nb)) 我不明白为什么第二个回音返回15。试试这个: #!/bin/bash mark=$((10+10)) nb=2 echo $mark echo $(($mark/$nb)) 原因是当分配10+10时,不会计算结果。而是在最后一行执行10+10/$nb。结果当然是15。试试这个: #!/bin/bash mark=$((10+10)) nb

我有一个脚本:

#!/bin/bash

mark=10+10  
nb=2

echo $mark  
echo $(($mark/$nb))
我不明白为什么第二个回音返回15。

试试这个:

#!/bin/bash

mark=$((10+10))
nb=2

echo $mark  
echo $(($mark/$nb))
原因是当分配10+10时,不会计算结果。而是在最后一行执行10+10/$nb。结果当然是15。

试试这个:

#!/bin/bash

mark=$((10+10))
nb=2

echo $mark  
echo $(($mark/$nb))

原因是当分配10+10时,不会计算结果。而是在最后一行执行10+10/$nb。结果当然是15。

这是因为运算符的前导,而且因为
mark
本身并没有被计算(在数学意义上的计算)

echo$($mark/$nb))
首先替换为
$((10+10/2))
,然后计算为
10+5
,即
5

该问题有多种解决方案,例如:

echo $((mark/nb)
echo $((($mark)/$nb))

这是因为运算符的先行性,以及因为
标记
本身并没有被计算(从数学意义上来说是求值)

echo$($mark/$nb))
首先替换为
$((10+10/2))
,然后计算为
10+5
,即
5

该问题有多种解决方案,例如:

echo $((mark/nb)
echo $((($mark)/$nb))
应该是
echo$((标记/nb))
应该是
echo$((标记/nb))