2011-08-01 16 views
2

私は一緒にハッキングした実行中のスクリプトと共に単純なログファイルを作成しようとしています。bashスクリプトでのteeの使用(Solaris上)

TEE="/usr/bin/tee" 
TO_LOG="/usr/bin/tee >> $LOG_DIR/hosts.`date +%Y%m%d-%H%M%S`.log" 

次に、これらの2を次のように慣れる:

echo "something happened!" | $TO_LOG 

は、残念ながら、これはやっている唯一のことは、文字通り私のCWDで>>という名前の提出に空を作成している問題の行は次のようになります。 bash -xでこのスクリプトを実行すると、リダイレクト付きの追加演算子がシングルクォートされて表示されますが、文字通りこれが起きているのか、それとも対話型デバッグモードでbashによって追加されたのか分かりません。

+ echo 'something happened!' 
+ /usr/bin/tee '>>' /backups/logs/mylog.20110801-182337.log 

答えて

5

teeそれ自体がファイル書き込みを行うことを意図しています。私は、あなたがしたいと思う:

/usr/bin/tee -a $LOG_DIR/hosts.`date +%Y%m%d-%H%M%S`.log 

-aオプションは、(>はほとんどのシェルで切り捨て一方>>が追加どのように似ている)ファイルを追加するのではなく、切り捨てるteeの原因となります。これは、あなたが望むものでなければなりません

1

...

TEE="/usr/bin/tee" 
LOG="$LOG_DIR/hosts.$(date +'%Y%m%d-%H%M%S').log" 
to_log() { 
    $TEE -a $LOG 
} 

echo "test" | to_log 
関連する問題