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