据我了解bash
,其他一些解释器仅对整数执行算术运算。在下面的for
循环中,我怎样才能做到这一点?我读过bc
可以使用但不知道bc
在这种情况下如何使用。
total=0
for number in `cat /path/to/file`; do
total=$(($total+$number))
done
average=$(($total/10))
echo Average is $average
文件:
1.143362
1.193994
1.210489
1.210540
1.227611
1.243496
1.260872
1.276752
1.294121
1.427371
答案1
您可能不想用于bc
此目的。也许awk
会更好:
awk '{sum+=$1};END{print sum/NR}' /path/to/file
答案2
答案3
我通常用于bc
浮点运算:
file=1.txt
echo '('$(<$file)')/'$(wc -l < $file) | sed 's/ /+/g' | bc -l
答案4
term=0
file=input
for number in `cat "$file"`; do
term="${term}+${number}"
done
total="$(echo "$term" | bc -l)"
average="$(echo "${total}/10" | bc -l)"
average="$(echo "$average" | sed -e 's/^\(.*\..*[^0]\)0*/\1/' -e p)"
echo "Total: ${total}"
echo "Average: ${average}"