我有这些 bash 函数:
on_ql_trap(){
echo "foobar" > "$HOME/.quicklock/debug.json"
}
ql_trap(){
trap on_ql_trap EXIT;
trap on_ql_trap 0;
trap on_ql_trap SIGHUP;
trap on_ql_trap HUP;
}
ql_trap 由用户调用,但是当用户关闭调用该函数的 bash shell 窗口时,on_ql_trap 永远不会被调用,“foobar”永远不会被写出。
我唯一能想到的是,trap
没有注册正确的流程或其他什么。有谁知道我如何保证on_ql_trap
流程结束时会被调用?
答案1
不知道为什么,但如果我把它们全部放在同一行,似乎可行:
trap on_ql_trap EXIT HUP INT QUIT TERM;