Comprobar el código de salida en Bash
Este tutorial describirá varios métodos para obtener y mostrar el estado de salida de una declaración en Bash. Primero discutiremos el uso de una declaración simple if
para obtener el estado de salida, después de lo cual discutiremos las alternativas y las notaciones abreviadas para obtener el estado de salida.
Comprobar el código de salida en Bash
El estado de salida es esencialmente un número entero que nos dice si el comando tuvo éxito o no. De manera no intuitiva, un estado de salida de 0
indica éxito, y cualquier valor distinto de cero indica falla/error.
Esta solución no intuitiva permite que diferentes códigos de error representen diferentes errores. Por ejemplo, si no se encuentra un comando, se devolverá el estado de salida de 127
.
La forma de verificar el código de salida en Bash es usando el $?
dominio. Si desea generar el estado de salida, puede hacerlo de la siguiente manera:
# your command here
testVal=$?
echo testVal
Sabemos que los códigos de salida distintos de cero se utilizan para informar errores. Si queremos verificar errores en general, podemos escribir un pequeño script con el comando en cuestión y una declaración if
que verifique si el código de salida es de un error (distinto de cero) o si el código de salida indica una ejecución adecuada .
# your command here
testVal=$?
if [$testVal -ne 0]; then
echo "There was some error"
fi
exit $testVal
Se puede hacer una notación abreviada usando una test
en el $?
dominio. Un ejemplo mínimo de este código puede ser:
# your command here
test $? -eq 0 || echo "There was some error"
Para una mejor comprensión de la afirmación anterior, podemos ampliarla.
# your command here
exitStat = $?
test $exitStat -eq 0 && echo "No error! Worked fine" || echo "There was some error";
exit $exitStat
Arriba, podemos ver el mensaje "No error! Worked fine"
en caso de ejecución exitosa, y el mensaje de error en caso de falla.
Notas importantes y posibles soluciones alternativas
Si se utilizan códigos de salida para ver si el comando se ejecuta correctamente o no, tenemos una alternativa mucho más sencilla.
# define your_command here
# your_command = enter a command here
if your_command; then
echo command returned true
else
echo command returned an error
fi
En este caso, generalmente obtenemos el mismo resultado que obtendríamos con las dos primeras opciones. Además, obtener información específica sobre el código de salida u obtener el código de salida específico requiere ejecutar $?
a mano.
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn