为什么在分配空变量时 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)
我已经使用陷阱功能一段时间了,但是运行遇到了一个我不明白的问题。
这是一个代表:
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)