Verifique se um script concluiu a execução em vez de sair

Verifique se um script concluiu a execução em vez de sair

Estou trabalhando com um script que não consigo modificar, que não utiliza códigos de saída. (todas as saídas são simplesmente 'saída')

Sem modificar o script (ou gritar com os idiotas que o escreveram), existe uma maneira de verificar se o script "chegou ao fim" em vez de sair em algum ponto anterior do script?

A única coisa que consigo pensar é de alguma forma rastrear os processos ativos até que terminem, mas também terminaria quando fosse encerrado devido a um erro.

Responder1

Estou trabalhando com um script que não consigo modificar, que não utiliza códigos de saída.

Se houver um erro, a última linha desse arquivo deverá conter 'exit', caso contrário o script será executado com sucesso.

Este código fará com que o comando saia com o código 1 se falhar e o código 0 se tiver sucesso:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit

tail -n1exibe apenas a última linha e grep -vq exittesta se essa linha continha a palavra exit.

Exemplos de como fazer com que isso exiba mensagens úteis:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit && echo Success

Ou:

bash -x scriptname 2>&1 | tail -n1 | grep -vq exit || echo Fail

informação relacionada