我正在尝试将脚本所做的更改记录到日志文件中。在非常高的级别,我的脚本具有功能,我希望能够将该信息记录到文件中。我用了" tee -a"但这在很多方面搞砸了这个功能。
有没有简单的方法来完成这项任务?
更新:修正了
以下的拼写错误function1(){ ... } function2(){ ... } #main function1 | tee -a /tmp/logfile function2 | tee -a /tmp/logfile
答案 0 :(得分:1)
(编辑以反映问题编辑) 您可以将tee合并到函数定义中:
function() { { ...<original function definition goes here>; } | tee -a output; }
因此,每次调用此功能时都不需要调用tee。显然,如果函数修改文件描述符,您将需要做更多的工作。另外,请记住,这会改变缓冲。如果从function1中调用的命令对于它们的stdout有一个tty,它们可能会对它们的输出进行行缓冲,但是如果它们的stdout是一个管道(如果你正在管道到tee
那就是它),则输出将被块缓冲。这可能是您所看到的差异的根本原因。此外,这仅捕获一个文件描述符的输出。也许你有命令写入stderr。您需要提供有关管道发球管改变脚本行为的方式的更多详细信息。