Shell Bash,您可以检查功能是否存在



我想知道是否可以检查脚本中的函数的存在。IE。目前,我有一些如果要检查值然后调用函数,但是想知道是否可以做类似的事情:

if[[ ${function_name}Function exists ]]
then
.....call function etc
fi

脚本中可能有一个函数

这是可能的吗?

if type Function &>/dev/null
then
   ...
fi

示例:

$ type f 2>& /dev/null && echo f exists || echo f does not exist 
f does not exist
$ f()
> {
> echo 1
> }
$ type f >& /dev/null && echo f exists || echo f does not exist 
f exists

我在这里该怎么办?

  • 在这里,我首先检查函数f是否存在;它不存在,好的。
  • 然后我创建它。
  • 然后我再次检查它是否存在。它存在,好的。

没有其他检查,您不能直接说出它是命令,别名还是函数;您知道该实体是否存在是否存在。

如果您想运行功能并且仅功能,则必须使检查更严格:

type Function | grep -q '^function$' 2>/dev/null

在Bash中,您也可以使用declare -F function。(感谢另一个人)

declare -F向您显示在bash中声明的所有功能。从那里有一个简单的declare -F my_function && echo 'function exists'

我发现的最可靠的方法是

FuncName='MyFunction'
if typeset -f "${FuncName}" > /dev/null; then
  "${FuncName}"
fi

顺便说一句,此方法在zsh也可以正常工作。

相关内容

  • 没有找到相关文章