Use códigos de saída para comunicar essas informações. Se você quiser seguir as convenções , você pode usar, por exemplo, o
EX_DATAERR=65
código para comunicar um erro de análise ao seu processo pai:
Criança
exit "$EX_DATAERR"
Pai
case "$?" in #$? is the exit code of the last exited child
0) echo 'Child has exited succesfully';;
"$EX_DATAERR") echo 'Child has experienced a parsing error';;
*) echo 'Child has experienced an unknown error';;
esac
No que se refere ao tratamento de erros, o shell é como C em vez de C ++. Não joga. Cada erro deve ser retornado pelo receptor (para processos por seus códigos de saída, pois não há um erro global (usar o sistema de arquivos para isso seria desajeitado) e o chamador precisa verificar explicitamente os erros.
Você pode fazer set -e
em seu shell para fazer com que seu shell saia com um erro se algum de seus filhos cujo status de saída não foi verificado (por exemplo, em uma instrução if
) retornar um status de saída diferente de zero . Isso é como lançar uma exceção incontável.