0

我有一组 sh 脚本:

Main.sh which calls - parent folder
      Sub-Main.sh which calls - child folder
             Sub-Sub-Main.sh  - grandchild folder

这是 Ubuntu 上的安装程序。我目前没有错误处理机制。我想建立一种机制,同时每个脚本中的每个命令都在执行并返回不同于 0 的退出代码 - 发送失败的行并向我发送电子邮件。类似于:'set -e',但有一个函数在它发生时被调用并通过电子邮件向我发送信息。

我在 trap.sh 文件中尝试了这样的陷阱:

trap.sh:    
    function exit_handler ()
    {
     Getting info and send email
    }
    trap exit_handler ERR

在我制作的每个脚本中:

source '/folder/to/trapfile/trap.sh'

我像这样运行它:

sudo bash Main.sh

我从 Main.sh 调用:

cd /SubMainFolder
./Sub-Main.sh

等等。

但它不工作。它不会进入陷阱。任何人都可以用一个例子来建议如何做到这一点,以及一个好的陷阱方法来发送带有错误、脚本名称和行失败的电子邮件吗?也许我没有很好地调用嵌套脚本?也许我必须在每个脚本的末尾加上“return 0”?

非常感谢

4

0 回答 0