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

前端之家收集整理的这篇文章主要介绍了覆盖一个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

原文链接:https://www.f2er.com/bash/384022.html

猜你在找的Bash相关文章