我想在 shell 脚本中执行一个函数之前检查它是否存在。
脚本外壳支持吗?怎么做?
正如在此评论中所读,这应该是:
type -t function_name
function
如果它是一个函数,则返回。
$ type -t f_test
$
$ f_test () { echo "hello"; }
$ type -t f_test
function
请注意,它type
提供了很好的信息:
$ type -t ls
alias
$ type -t echo
builtin
POSIX 没有为type
内置函数指定任何参数,并且未指定其输出。除了特定于 shell 的解决方案之外,您最好的选择可能是
if type foo | grep -i function > /dev/null; then
# foo is a function
fi
您总是可以尝试执行该功能。如果不存在,该命令的退出状态将为 127:
$ myfunction arg1 arg2 || {
> if [ $? -ne 127 ]; then
> echo Error with my function
> else
> echo myfunction undefined
> fi; }
当然,该函数可能与另一个二进制文件具有相同的名称,并且如果该程序没有被该函数隐藏,您可能不想运行该程序。