En los entornos unix la variable de entorno ? queda con el valor devuelto por el último comando ejecutado.
Por ejemplo, un ls correcto
$ ls
...
$ echo $?
0
Ahora un ls incorrecto (opciones que no valen)
$ls -aa3wrñvz
...
$ echo $?
2
Devuelve un código de error.
A ver si te vale eso.
Se bueno.