以下代码中的错误是什么。数学表达式似乎失败了 代码的目的是从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
答案 0 :(得分:2)
这里有几个错误/拼写错误。 例如,在行中:
sumSq= `expr $sumSq + $num * $num]`
你不应该在=和`之间写空格。此外,您在这里只有一个]
,没有[
。
另外,请注意/
表示整数除法;这意味着3/2是1而不是1。