有一个 bash 脚本可以打印一些日志并允许一些参数。该脚本将日志打印到 STDOUT。假设脚本的名称是AAA.sh
我还想制作将日志打印到的脚本STDOUT
和file
.这可以通过 来完成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
将在脚本内正常运行,并将"$@"
包含所有父参数。