在 zsh 中获取调用函数的名称 [英] Get name of calling function in zsh

查看:18
本文介绍了在 zsh 中获取调用函数的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在某个时候在 shell 脚本中获取函数调用者名称,在 bash 中它与 ${FUNCNAME[1]}

I want to get function caller name in shell script sometime, in bash it works with ${FUNCNAME[1]}

${FUNCNAME[1]} 是(来电者姓名)

${FUNCNAME[0]} 是 c(当前名称)

但它在 zsh 中不起作用

but it not work in zsh

即我想知道在函数 c 中哪个函数调用了我

ie i want to know which function call me in function c

function a(){
    c
}

function b(){
    c
}

function c(){
     #if a call me; then...
     #if b call me; then...
}

推荐答案

函数调用栈在变量$funcstack[]中.

$ f(){echo $funcstack[1];}
$ f
f

所以在 c 中调用函数(ab)是 $funcstack[2] 或者也许更方便$funcstack[-1].

So in c the calling function (a or b) is $funcstack[2] or perhaps more conveniently $funcstack[-1].

这篇关于在 zsh 中获取调用函数的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆