Comprobar el código de salida en Bash

Muhammad Husnain 21 junio 2022
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.

Muhammad Husnain avatar Muhammad Husnain avatar

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

Artículo relacionado - Bash Exit