相关疑难解决方法(0)

退出使用$()的bash脚本

我的印象是exit无论如何都会终止当前的bash脚本,并且在我的脚本顶部有以下错误处理程序:

function err {
    printf "\e[31m$1\e[0m\n" 1>&2
    exit 1
}
Run Code Online (Sandbox Code Playgroud)

对于大多数情况来说,它就像一个魅力,直到这一行:

item=$(myfunc $1)
Run Code Online (Sandbox Code Playgroud)

通常情况下,该行正常工作,myfunc的STDOUT $item按预期转入.myfunc通过err上面看到的函数抛出错误时会出现问题.在$()结束了吞咽不回零和退出脚本本身守着退出.如果我理解正确,问题是$()实际上产生了一个新的子shell(就像被弃用的反引号一样),但我知道没有其他方法可以将函数的输出捕获到bash中允许其exit工作的变量中.

我也尝试使用set -e,也没有运气.有人可以建议如何构建我的错误处理程序,以便它甚至在这些情况下退出脚本?

bash

2
推荐指数
1
解决办法
138
查看次数

标签 统计

bash ×1