Mostra a mensagem de erro se o script bash terminar devido a set -e

4

Eu quero terminar o script se algum comando retornar um valor diferente de zero, o que eu consegui adicionando set -e .

Agora o script falha ao encontrar problemas (o que é desejável), mas é fácil errar - alguns comandos podem retornar código de erro sem imprimir o que falhou.

Qual é o modo padrão de adicionar aviso de mensagem de erro de que o script foi encerrado?

    
por Mateusz Konieczny 11.02.2018 / 17:33

1 resposta

5

Com a ajuda de Bash captura qualquer erro como -e mas não sai, faz outra coisa Eu encontrei uma maneira de mostrar a mensagem de erro antes de terminar o script.

Pode-se usar trap para garantir que o código especificado seja executado ao encontrar o erro, o que acontece imediatamente antes da opção -e finalizar o script. Por exemplo

set -e

err_report() {
    echo "Error on line $1"
}

trap 'err_report $LINENO' ERR

echox
echo "x"

resultará em

test.sh: line 9: echox: command not found
Error on line 9
    
por 11.02.2018 / 17:33