
いくつかのログを印刷し、いくつかのパラメータを受け入れる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
スクリプト内で正常に実行され、"$@"
すべての親パラメータを含みます。