我有个简单的剧本:
#!/bin/bash
set -e
trap "echo BOO!" ERR
function func(){
ls /root/
}
func
如果我的脚本失败了,我想捕获 ERR (因为它将在这里 b/c 我没有权限查看/root)。但是,当使用 set -e
时,它不会被捕获。没有 set -e
,ERR 就被困住了。
根据 bash 手册页面,对于 set -e
:
... 如果设置了 ERR 陷阱,则在 shell 退出之前执行。 ..。
- 为什么我的陷阱没有被执行?-从手册上看应该是这样的。