用 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將在腳本內正常運行,並將"$@"包含所有父參數。

相關內容