是否可以覆盖一个
shell函数并保留对原始函数的引用?
f() { echo original; } f() { echo wrapper; ...; } f
其输出应为:
wrapper original
这可能是半便携式的吗?
理由:我试图通过用shell函数替换它的一部分来测试我的程序,将其调用记录到一个日志文件中.只要我只包含命令和内置函数,只要我不介意滥用日志记录,这个工作正常.现在我想让测试套件更容易维护,只需在每个测试中记录有趣的部分.
所以让我们的程序包括
f g h
其中f,g,h都是shell函数,我想跟踪g的执行.
Jens的答案是正确的.只需添加下面的代码完整性.
原文链接:https://www.f2er.com/bash/384022.html你可以简单地使用它,如下所示:
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