【问题标题】:Using tee in a bash script (on Solaris)在 bash 脚本中使用 tee(在 Solaris 上)
【发布时间】:2023-03-07 20:30:01
【问题描述】:

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

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

【问题讨论】:

    标签: bash solaris tee


    【解决方案1】:

    tee 本身就是用来写文件的。我想你想要:

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

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

    【讨论】:

      【解决方案2】:

      这应该是你想要的......

      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
      

      【讨论】:

        猜你喜欢
        • 2022-07-29
        • 1970-01-01
        • 2010-12-20
        • 1970-01-01
        • 1970-01-01
        • 2013-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多