我想知道是否可以在脚本中检查函数的存在。即此刻,我如果是要检查的值,然后调用一个函数的几个,但不知道是否有可能做这样的事情:shell bash,你可以检查一个函数是否存在
if[[ ${function_name}Function exists ]]
then
.....call function etc
fi
那里可能是脚本中的一个函数
这可能吗?
我想知道是否可以在脚本中检查函数的存在。即此刻,我如果是要检查的值,然后调用一个函数的几个,但不知道是否有可能做这样的事情:shell bash,你可以检查一个函数是否存在
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
正常工作了。
+1。更简洁的说,将这个建议合并到一个单独的测试中:'if [[$(type -t $ funcname 2>/dev/null)== function]];然后回显“我是一个功能”; fi' –
'declare -F function>/dev/null' –
“在bash中没有这样的操作来检查函数是否存在” - 是的。请参阅'帮助申报'。 – l0b0