如何在出现错误时退出 shell 脚本并向用户发送消息?

如何在出现错误时退出 shell 脚本并向用户发送消息?

我有一个/bin/fooshell 脚本文件。

如何在出现错误时退出 shell 脚本并向用户发送消息?

如果我只是使用 aset -e那么它会因错误而退出,但在遇到错误时不会运行任何命令,例如向 STDOUT 发送消息或发送邮件。

问题:如果 shell 脚本运行出错,如何运行命令?

SLES12,bash。

答案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"

相关内容