测试可以在 bash 和 zsh 上运行的函数是否存在?

kjo*_*kjo 16 bash zsh shell-script function

有没有办法测试是否存在同时适用于bash和的shell 函数zsh

Sté*_*las 23

如果您想通过名称检查当前定义的(或至少可能标记为自动加载的)函数foo,无论内置/可执行文件/关键字/别名是否也可以通过该名称使用,您可以执行以下操作:

if typeset -f foo > /dev/null; then
  echo there is a foo function
fi
Run Code Online (Sandbox Code Playgroud)

但请注意,如果还调用了关键字或别名foo,它将优先于函数(未引用时)。

以上应该适用于ksh(它来自哪里),zsh并且bash.