gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:19:42 25 4
gpt4 key购买 nike

是否可以覆盖 shell 函数并保留对原始函数的引用?

f()  { echo original; }
f() { echo wrapper; ...; }
f

输出应该是:

wrapper
original

这可以通过半可移植方式实现吗?

理由:我试图通过用 shell 函数替换部分程序来测试我的程序,这些函数将它们的调用记录到日志文件中。只要我只包装命令和内置命令,并且只要我不介意不加区别的日志记录,这就可以正常工作。现在我想通过只记录每个测试中有趣的部分来使测试套件更易于维护。

假设我的程序包括

f
g
h

其中 fgh 都是 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

关于shell - 覆盖 shell 函数,保留对原始函数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16774538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com