Como sair de um script de shell em caso de erro E enviar uma mensagem ao usuário?

Como sair de um script de shell em caso de erro E enviar uma mensagem ao usuário?

Eu tenho um /bin/fooarquivo de script de shell.

Como sair de um script de shell em caso de erro E enviar uma mensagem ao usuário?

Se eu simplesmente usar a, set -eele será encerrado em caso de erro, mas nenhum comando será executado quando ocorrer um erro, como enviar uma mensagem para STDOUT ou enviar um e-mail.

A questão: como executar um comando se o shell script gerar um erro?

SLES12, festa.

Responder1

Você pode criar uma função para enviar mensagens ao seu usuário e usá trap-la para executá-la quando o script for encerrado com erro:

#!/bin/bash

set -e

on_exit () {
    echo "This script has exited in error"
}

trap on_exit ERR

echo 'yes' | grep "$1"

Em uso:

$ ./script.sh yes
yes
$ ./script.sh no
This script has exited in error

Responder2

Se você quiser que funcione no sh antigo também (em vez de apenas no bash):

#!/bin/sh
set -e
trap 'test $? -gt 0 && echo "This script has exited in error" >&2' 0

echo 'yes' | grep "$1"

informação relacionada