考虑以下shell函数:
f() {
echo "function"
trap 'echo trap; sleep 1' EXIT
}
在bash下,这将打印以下内容:
~$ f
function
~$ exit
trap
在zsh上,这是结果:
~$ f
function
trap
~$ exit
中所述
如果sig为0或EXIT并且在函数体内执行了trap语句,则在函数完成后执行命令arg。
我的问题:有没有办法设置EXIT
陷阱,只在 bash和zsh中 shell退出上执行?
答案 0 :(得分:5)
强烈无聊和无趣的回答:
f() {
if [ "$ZSH_VERSION" ]
then
zshexit() { echo trap; sleep 1; } # zsh specific
else
trap 'echo trap; sleep 1' EXIT # POSIX
fi
}