在bash脚本中使用tee(在Solaris上)

时间:2011-08-01 18:25:14

标签: bash solaris tee

我正在尝试构建一个简单的日志文件以及我已经一起攻击的正在运行的脚本。有问题的行如下所示:

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

然后这两个就像这样使用:

echo "something happened!" | $TO_LOG

不幸的是,唯一要做的就是在我的CWD中创建一个名为>>的空字段。使用bash -x运行此脚本会显示带有追加运算符的重定向获取单引号 - 尽管我不确定这是否真的发生了,或者是否只是在交互式调试模式下被bash追加。

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

2 个答案:

答案 0 :(得分:5)

tee本身用于编写文件。我想你想要:

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

-a选项导致tee追加而不是截断文件(类似于>>追加的方式,而>在大多数shell中都会截断)。

答案 1 :(得分: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