我想知道是否可以检查脚本中是否存在函数。即此刻,我有几个if来检查一个值,然后调用一个函数,但是想知道是否有可能做类似的事情:
if[[ ${function_name}Function exists ]]
then
.....call function etc
fi
脚本中可能有一个函数
这可能吗?
答案 0 :(得分:6)
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
。 (感谢那个人)
答案 1 :(得分:1)
declare -F
显示在Bash中声明的所有函数。从那里它是一个简单的declare -F my_function && echo 'function exists'
答案 2 :(得分:0)
我找到的最可靠的方法是
FuncName='MyFunction'
if typeset -f "${FuncName}" > /dev/null; then
"${FuncName}"
fi
顺便说一句,这种方法在zsh
也可以正常工作。