shell bash,你能检查一个函数是否存在

Pec*_*tum 3 string bash shell grep function

我想知道是否有可能检查脚本中是否存在函数.就在这一刻,我有一些if if来检查一个值,然后调用一个函数,但是想知道是否有可能做类似的事情:

if[[ ${function_name}Function exists ]]
then
.....call function etc
fi
Run Code Online (Sandbox Code Playgroud)

脚本中可能有一个函数

这可能吗?

Igo*_*bin 6

if type Function &>/dev/null
then
   ...
fi
Run Code Online (Sandbox Code Playgroud)

例:

$ 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
Run Code Online (Sandbox Code Playgroud)

我在这里干什么

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

如果没有额外的检查,您无法直接说出它是命令,别名还是函数; 如果该实体存在或不存在,您知道的所有内容.

如果要运行函数而只运行函数,则必须使检查更严格:

type Function | grep -q '^function$' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)

在bash中你也可以使用declare -F function.(感谢那个人)

  • +1.更简洁地说,将该建议结合到一个单独的测试中:`if [[$(type -t $ funcname 2>/dev/null)== function]]; 然后回应"我是一个功能"; fi` (2认同)