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
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