
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 -n1
exibe apenas a última linha e grep -vq exit
testa 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