Duda guion shell

Hola experto. Hace tiempo me registre en esta página y la verdad es que me encanto y hoy vuelvo a usarla.
Se trata de un guion shell, en el que tengo que hacer un conversor de temperaturas. Esta casi terminado, pero tengo un problema, más bien dos.
El primero es el poner rangos en las temperaturas, es decir:
Celsius puede ir desde [-273.15...infinito]
Kelvin [0...infinito]
Fahrenheit [-495.67...infinito]
No se como hacerlo. El otro problema que tengo es que ademas de establecer rangos, tengo que mostrar un mensaje de error por pantalla cuando a la hora de meter una temperatura para convertir meto una letra por ejemplo, es decir un valor no válido.
Sin más te dejo el script para ver si podemos solucionarlo
#!/bin/bash
while :
do
 echo
 echo Select a conversion:
 echo
 echo "1) ºC -> ºF"
 echo "2) ºC ->  K"
 echo "3) ºF ->  K"
 echo "4) ºF -> ºC"
 echo "5)  K -> ºC"
 echo "6)  K -> ºF"
 echo
 echo "Select an option:"
 read OPTION
 case $OPTION in
    1) clear
       echo "Input temperature to convert: "
        read TEMP
       until [ "$TEMP" =  ]  
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done        
        res=$(echo "(1.8 * $TEMP) + 32" | bc)
           echo -e "\E[31mºC: $TEMP"
           echo -e "ºF: $res\E[30m"
           echo
              ;;
    2) clear
       echo "Input temperature to convert: "
        read TEMP
       until [ "$TEMP" =  ]  
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done    
       res=$(echo "$TEMP + 273.15" | bc)
       echo -e "\E[31mºC: $TEMP"
       echo -e "K: $res\E[30m"
       echo
       ;;
    3) clear
       echo "Input temperature to convert: "
           read TEMP
       until [ "$TEMP" =  ]  
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done    
       res=$(echo "0.56 * ($TEMP + 459.67)" | bc)
       echo -e "\E[31mºF: $TEMP"
       echo -e "K: $res\E[30m"
       echo
       ;;
    4) clear
       echo "Input temperature to convert: "
        read TEMP
       until [ "$TEMP" =  ]  
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done    
       res=$(echo " ($TEMP - 32) * 0.56" | bc)
       echo -e "\E[31mºF: $TEMP"
       echo -e "ºC: $res\E[30m"
       echo
       ;;
    5) clear
       echo "Input temperature to convert: "
           read TEMP
       until [ "$TEMP" =  ]
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done    
            res=$(echo "$TEMP - 273.15" | bc)
           echo -e "\E[31mK: $TEMP"
           echo -e "ºC: $res\E[30m"
           echo
            ;;
    6) clear
       echo "Input temperature to convert: "
        read TEMP
       until [ "$TEMP" = ]  
       do
        echo "Ese valor es incorrecto. Por favor introduce otro valor:"
            read TEMP
       done    
       res=$(echo "(1.8 * $TEMP) - 495.67" | bc)
       echo -e "\E[31mK: $TEMP"
       echo -e "ºF: $res\E[30m"
       echo
       ;;
    *) clear    
       echo "Esa opcion no esta disponible, elige otra."
       ;;
esac
Done
Un saludo

Añade tu respuesta

Haz clic para o