为什么在分配空变量时 trap in bash 抛出错误

Why is trap in bash throwing an error when empty variable is assigned

我已经使用陷阱功能一段时间了,但是运行遇到了一个我不明白的问题。

这是一个代表:

err_report() {
    
    echo -e "ERROR LINE "
    exit 1;
}
trap 'err_report ${LINENO}' ERR

existing=$(echo test | grep -oP "x")

这将引发错误,因为 grep 的结果为空。当我 运行 没有陷阱的代码时,一切正常。我尝试设置 set +u 但这没有帮助..

我做错了什么?

谢谢

grep无法匹配任何东西时,它将以non-zero退出状态退出,触发ERR陷阱。由于您对此处 grep 的退出状态不感兴趣,因此这应该可以解决问题:

existing=$(echo test | grep -oP 'x' || true)