
Estoy trabajando con un script que no puedo modificar, que no utiliza códigos de salida. (todas las salidas son simplemente 'salida')
Sin modificar el guión (o gritarles a los idiotas que lo escribieron), ¿hay alguna manera de verificar si el guión "llegó al final" en lugar de salir en algún punto anterior del guión?
Lo único que se me ocurre es rastrear de alguna manera los procesos activos hasta que finalicen, pero también finalizaría cuando salga debido a un error.
Respuesta1
Estoy trabajando con un script que no puedo modificar, que no utiliza códigos de salida.
Si hay un error, la última línea de ese archivo debe contener "salir"; de lo contrario, el script terminó de ejecutarse correctamente.
Este código hará que el comando salga con el código 1 si falló y el código 0 si tuvo éxito:
bash -x scriptname 2>&1 | tail -n1 | grep -vq exit
tail -n1
muestra solo la última línea y grep -vq exit
prueba si esa línea contenía la palabra exit
.
Ejemplos de cómo hacer que esto muestre mensajes útiles:
bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success
O:
bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail