Pues verás, si pones el comando anterior el
echo " "
Este siempre devolverá 0, porque siempre tendrá exito. La variable $? tiene el valor de retorno del comando ejecutado inmediatamente antes. Es por esto que el ejemplo textual:
Código:
#!/bin/bash
echo "Listando archivo existente..."
ls archivo_existente
echo "El valor de retorno fue: $?"
echo " "
echo "Listando archivo inexistente..."
ls archivo_inexistente
echo "El valor de retorno fue: $?"
exit
debería funcionar correctamente. Porque está inmediatamente después del comando que produce el error.
Aunque siempre tienes la opción de guardar el valor de retorno de un comando en otra variable para hacer uso de él más tarde:
Código:
#!/bin/bash
ls archivo_inexistente
RETVAL=$?
## Aquí pongo las líneas que quiera
echo "El valor de retorno del listado de"
echo "unas líneas antes fue: $RETVAL"
Espero que sirva.
Un saludo,