Estoy haciendo algunos ejercicios de práctica.
Escriba un guión que recibirá un número de mes como argumento y traducirá este número en un nombre de mes. El resultado se imprimirá en stdout.
Hice una solución:
#test for number of argument
if [ "$#" -eq 0 ] ;
then
echo -e "No argument."
echo -e "Write a number between 1 and 12."
exit 1
elif [ "$#" -gt 1 ] ;
then
echo -e "More than 1 argument."
echo -e "Write a number between 1 and 12."
exit 1
else
numb=$1
case "$numb" in
1) echo "Month: January";;
2) echo "Month: February";;
3) echo "Month: March";;
4) echo "Month: April";;
5) echo "Month: May";;
6) echo "Month: June";;
7) echo "Month: July";;
8) echo "Month: August";;
9) echo "Month: September";;
10) echo "Month: October";;
11) echo "Month: November";;
12) echo "Month: December";;
*) echo -e "You wrote a wrong number. Try again with writing number between 1 and 12.";;
esac
fi
exit 2
exit 0
Lo que hacemos exit 1, exit 0
y exit 2
entendemos, y por qué las usamos?
Respuestas:
Aquí hay una buena referencia para los códigos de salida de shell :
Advertencia: el uso del código de salida adecuado no es un requisito y el shell no lo exige. Los desarrolladores pueden ignorar la guía si lo consideran prudente.
fuente
Usar
exit
y un número es una forma práctica de señalar el resultado de su secuencia de comandos. Imita la forma en que los comandos bash generan un código de retorno. Con los comandos bash, el código de retorno 0 generalmente significa que todo se ejecutó correctamente sin errores.exit
también hace que su script detenga la ejecución en ese punto y regrese a la línea de comando.Cualquier código de retorno mayor que 0 indica un error de algún tipo, aunque a veces el error no es crítico, para cada comando debería ser posible encontrar alguna documentación que le diga qué significa cada código de retorno.
Puede obtener el código de retorno del último comando bash utilizando la variable de shell de esta
$?
manera:Cuando usa esto en un script, puede consultar el código de retorno de la misma manera cuando termina de ejecutarse. Entonces verás que tener:
No tiene sentido, ya que nunca puedes llegar a la
exit 0
parte.fuente
Por sí solo,
exit
implica un valor de salida de cero, o la finalización exitosa de su script. No tiene que agregar el argumento cero al comando de salida para indicar la finalización exitosa. Su script puede (o probablemente lo hará) salir con éxito, aunque prueba una condición errónea. En este caso, desea que salga específicamente con la condición de error (o 1).El
exit
comando en la última línea no tiene que estar allí en absoluto. Se podría llamar con el cero o no llamarlo en absoluto. Sin especificar el argumento 1 para el comando de salida, la respuesta en todos estos casosecho $?
sería cero.Sin embargo, al especificar el argumento 1 para el comando de salida, la respuesta
echo $?
sería 1. Entonces, use el argumento 1 para el comando de salida cuando desee especificar que el script ha salido con una condición de error.fuente