加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

覆盖一个shell函数,保留对原始函数的引用

发布时间:2020-12-16 01:24:44 所属栏目:安全 来源:网络整理
导读:是否可以覆盖一个 shell函数并保留对原始函数的引用? f() { echo original; }f() { echo wrapper; ...; }f 其输出应为: wrapperoriginal 这可能是半便携式的吗? 理由:我试图通过用shell函数替换它的一部分来测试我的程序,将其调用记录到一个日志文件中.
是否可以覆盖一个 shell函数并保留对原始函数的引用?
f()  { echo original; }
f()  { echo wrapper; ...; }
f

其输出应为:

wrapper
original

这可能是半便携式的吗?

理由:我试图通过用shell函数替换它的一部分来测试我的程序,将其调用记录到一个日志文件中.只要我只包含命令和内置函数,只要我不介意滥用日志记录,这个工作正常.现在我想让测试套件更容易维护,只需在每个测试中记录有趣的部分.

所以让我们的程序包括

f
g
h

其中f,g,h都是shell函数,我想跟踪g的执行.

Jens的答案是正确的.只需添加下面的代码完整性.

你可以简单地使用它,如下所示:

eval "`declare -f f | sed '1s/.*/_&/'`" #backup old f to _f

f(){
    echo wrapper
    _f # pass "$@" to it if required.
}

我在这里使用了相同的逻辑:https://stackoverflow.com/a/15758880/793796

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读