¿Cómo salir de un script de Shell en caso de error Y enviar un mensaje al usuario?

¿Cómo salir de un script de Shell en caso de error Y enviar un mensaje al usuario?

Tengo un /bin/fooarchivo de script de shell.

¿Cómo salir de un script de Shell en caso de error Y enviar un mensaje al usuario?

Si simplemente uso a, set -esale en caso de error, pero no se ejecutan comandos cuando llega al error, como enviar un mensaje a STDOUT o enviar un correo.

La pregunta: ¿cómo ejecutar un comando si el script de shell genera un error?

SLES12, fiesta.

Respuesta1

Puede crear una función para enviar un mensaje a su usuario y utilizarla trappara que se ejecute cuando el script finalice por error:

#!/bin/bash

set -e

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

trap on_exit ERR

echo 'yes' | grep "$1"

En uso:

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

Respuesta2

Si quieres que funcione también en sh antiguo (en lugar de solo en bash):

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

echo 'yes' | grep "$1"

información relacionada