Compruebe si un script completó su ejecución en lugar de salir

Compruebe si un script completó su ejecución en lugar de salir

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 -n1muestra solo la última línea y grep -vq exitprueba 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

información relacionada