我想知道是否可以检查脚本中的函数的存在。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
也可以正常工作。