运行时错误(func =(main),adr = 5):除以零 - 如何修复?

时间:2016-02-25 19:08:38

标签: bash shell unix

我的shell脚本出现以下错误:Runtime error (func=(main), adr=5) : Divide by zero但是我看不到可以将其除以零的位置?我发现其他人有类似的问题,但解决方案是高度具体的,不能在我的脚本中复制它们。这是我的剧本:

dir=$folder
cd folder

shop1=$1
mean1=4.78
n1=127

shop2=$2
mean2=4.75
n2=324

grep -P -o '(?=<Rating>).*' $hotel1 |
awk '{ sub(/<Overall>/, ""; print }' |
awk '{sum+=$1; sumsq+=$1*$1} END {print sqrt(sumsq/NR - (sum/NR)**2)}'

grep -P -o '(?=<Rating>).*' $hotel2 |
awk '{ sub(/<Overall>/, ""; print }' |
awk '{sum+=$1; sumsq+=$1*$1} END {print sqrt(sumsq/NR - (sum/NR)**2)}'

md=0.03
d1=0.003
d2=0.0038
d1d2=$(echo "d1 + d2" | bc)
sq=0.069
tstat=$(echo "md / sq" | bc)

我的脚本基本上最终将从我的两个数据文件中计算t统计量,为此,它首先计算每个文件的标准差。谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

它不是awk,这是问题

tstat=$(echo "md / sq" | bc)

你必须使用$前缀来引用bash变量。

毋庸置疑,您的所有脚本都可以简化为一个awk