【问题标题】:How do I log output of a shell script and also display on the screen? [duplicate]如何记录 shell 脚本的输出并在屏幕上显示? [复制]
【发布时间】:2013-01-31 19:43:30
【问题描述】:

我正在运行一个名为 upgrade.sh 的脚本

并且 upgrade.sh 调用一个名为 roll.sh 的脚本

roll.sh >> logfile.text

但是 roll.sh 有一些问题和提示,并且重定向会阻止这些输出显示在屏幕上。我无法编辑 roll.sh。

我也试过`results=$(roll.sh)

即便如此,输出也没有出现在屏幕上

【问题讨论】:

    标签: linux shell unix logging


    【解决方案1】:

    使用tee,它是专门为此目的而创建的:将标准输入转发到屏幕和一个或多个文件。如果您不想覆盖它,请务必使用-a 选项附加到logfile.text

    roll.sh | tee -a logfile.text
    

    【讨论】:

    • 我要补充的唯一一件事是您可能应该使用roll.sh 2>&1 | tee -a logfile.txt 来捕获错误输出
    【解决方案2】:

    你想要tee:

    TEE(1)                           User Commands                          TEE(1)
    
    
    
    NAME
           tee - read from standard input and write to standard output and files
    

    【讨论】:

      【解决方案3】:

      处理这种情况的常用方法是让脚本将其提示写入 stderr 而不是 stdout。

      【讨论】:

      • 没错,但他说不能修改roll.sh
      猜你喜欢
      • 2011-08-23
      • 2013-10-16
      • 1970-01-01
      • 2020-09-03
      • 2019-12-12
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      相关资源
      最近更新 更多