The problem is the if statement with a lot of reverse logic in it; if one of the statements evaluates to 'true', it will stop evaluating the rest of the statements; Question could also be: which statement to evaluate.
Code:
if [ "$hour" != "$ch" ]
then
...
fi
So, if $hour equals $ch, the next test has to be evaluated, otherwise it is already true and doesn't become more or less true; So be careful linking all those tests together.
Then again, for the original question posted, bc has a good thing for you:
Code:
cur_temp="20.5"
tst_temp="20"
if [ $(echo "$cur_temp > $tst_temp" | bc -l) ]
then
echo "It's more than 20."
else
echo "It's less than 20."
fi