代码中数学表达式的错误是什么

时间:2014-01-02 11:18:16

标签: shell sh

以下代码中的错误是什么。数学表达式似乎失败了 代码的目的是从file.txt读取数字并计算均值和方差

平均数

 #!/bin/bash
if [ $# -ne 1 ]; then
        echo "Usage: \"$0\" <filename>"
        exit
fi

if [ ! -f $1 ]; then
        echo "$1 file not found."
        echo "Usage: $0 <filename>"
        exit
fi

sum=0
sumSq=0
count=0
arq=$1

while read line
do
        num=`echo ${line//[^0-9]/ }`
        sum=`expr $sum + $num`
        sumSq= `expr $sumSq + $num * $num]`
        count=`expr $count + 1`
done < "$arq"

if [ "$count" != 0 ]
then
        mean=`expr $sum / $count`
        variance=`expr [$sumSq - [$mean * $sum] / $count]`
        printf "Sum= \"$sum\" \n Count= \"$count\"  \n mean= \"$mean\"  \n sumSq= \"$sumSq\" \n variance= \"$variance\""
        exit 0
else
        printf "Sum= \"$sum\" \n Count= \"$count\"  \n Avg= undefined"
        exit 0
fi

file.txt

Current Offset from Master : 10
Current Offset from Master : 20

sh mean file.txt

1 个答案:

答案 0 :(得分:2)

这里有几个错误/拼写错误。 例如,在行中:

sumSq= `expr $sumSq + $num * $num]`

你不应该在=和`之间写空格。此外,您在这里只有一个],没有[

另外,请注意/表示整数除法;这意味着3/2是1而不是1。