#! /bin/bash
df_threshold=90;
while read x
do
x=${x%\%}
echo $x | egrep -q "^[0-9]*$"
[ $? -ne 0 ] && continue
if [ $(echo "$x > $df_threshold"|bc) -eq 1 ] ; then
echo "$x is more than $df_threshold "
fi
done < df_fnl.txt
@aish11: ${x%\%} --> Removes the shortest match of a pattern from the end of string. So, in this case, it finds for % (which is escaped) from the end and removes it.
echo $x | egrep -q "^[0-9]*$" --> This line checks if the line being read contains only a number after removing %. I saw an entry in df_fnl.txt is 'Use%', which doesn't form a valid number after removing % symbol and hence this check.
And as codemaniac and Shirishlnx suggested, use -gt rather than using > and invoking bc.