用 tee 包装 shell 脚本

用 tee 包装 shell 脚本

有一个 bash 脚本可以打印一些日志并允许一些参数。该脚本将日志打印到 STDOUT。假设脚本的名称是AAA.sh

我还想制作将日志打印到的脚本STDOUTfile.这可以通过 来完成tee

$ AAA.sh -a -b --c=d | tee 2012-07-03-080000.log

但我的团队经常忘记将输出通过管道传输到tee.我们应该将日志保存到文件中。所以我想用 包裹脚本tee

我想做的是

$ WrapAAAwithTee.sh -a -b --c=d

然后 AAAwithTee.sh 应该将日志打印到 STDOUT 和日志文件。
如何包装 AAA.sh?

答案1

该脚本比之前的答案效果更好:

#!/bin/bash

exec AAA.sh "$@" | tee "$(date +'%F-%H%M%S').log"

这将与空格一起正常工作,并根据当前时间为日志文件提供唯一的名称。这exec也使它更加高效,并在子进程启动后从进程树中删除包装器。

答案2

你的WrapAAAwithTee.sh应该包含:

#!/bin/bash
AAA.sh "$@" | tee 2012-07-03-080000.log

tee将在脚本内正常运行,并将"$@"包含所有父参数。

相关内容