Как выйти из скрипта оболочки при возникновении ошибки и отправить сообщение пользователю?

Как выйти из скрипта оболочки при возникновении ошибки и отправить сообщение пользователю?

У меня есть /bin/fooфайл скрипта оболочки.

Как выйти из скрипта оболочки при возникновении ошибки и отправить сообщение пользователю?

Если я просто использую , set -eто он завершает работу при возникновении ошибки, но при возникновении ошибки не выполняются никакие команды, например, отправка сообщения в STDOUT или отправка почты.

Вопрос: как выполнить команду, если скрипт оболочки завершается с ошибкой?

SLES12, баш.

решение1

Вы можете создать функцию для отправки сообщения пользователю и использовать trapее для выполнения в случае ошибки при завершении скрипта:

#!/bin/bash

set -e

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

trap on_exit ERR

echo 'yes' | grep "$1"

В использовании:

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

решение2

Если вы хотите, чтобы это работало и на старой версии sh (а не только на bash):

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

echo 'yes' | grep "$1"

Связанный контент