考虑以下shell函数:

f() {
    echo "function"
    trap 'echo trap; sleep 1' EXIT
}

在bash下将打印以下内容:
~$ f
function
~$ exit
trap

在zsh上,这是结果:
~$ f
function
trap
~$ exit

zshbuiltins man page中所述:



我的问题:有没有办法设置仅在bash和zsh中的 shell导出上执行的EXIT陷阱?

最佳答案

强制性的无聊而无趣的答案:

f() {
  if [ "$ZSH_VERSION" ]
  then
    zshexit() { echo trap; sleep 1; }  # zsh specific
  else
    trap 'echo trap; sleep 1' EXIT     # POSIX
  fi
}

关于bash - 如何在zsh和bash中的函数中设置shell导出陷阱,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22793713/

10-10 17:37