Bash não pode fazer comparações de ponto flutuante. Você precisa chamar outra ferramenta, aqui mostro bc entrada de leitura de uma bash aqui-string .
Use o comando read para extrair os campos das linhas do seu arquivo em vez de chamar cut várias vezes.
Você não pode inserir aspas duplas dentro de uma string entre aspas duplas sem escapar delas. Use printf para tornar a citação um pouco mais fácil.
#!/bin/bash
while IFS=: read dri nu tot fre rest_of_line; do
if [[ $(bc <<< "$fre > 2") == "1" ]]; then
color=81F781
else
color=B40404
fi
printf '<td align="Center" bgcolor="#%s">%s</td>' $color $fre >>mailbody.html
done < output_10.txt