【问题标题】:BASH save stdout to new file upon executionBASH 在执行时将标准输出保存到新文件
【发布时间】:2016-12-04 10:39:22
【问题描述】:

如果我的术语或语法不够出色(仍在学习),请多多包涵。我目前有一个简单的 bash 脚本,它检查命令的参数并输出具有匹配文本的文件名。我的脚本的这一部分通过 grep 命令正常工作,并通过管道传输到 xargs 以进行正确格式化。

在运行脚本时,我通过一个简单的循环来检查值是否为空,如果不是,则继续运行我的变量/搜索。

我的问题是:是否可以通过 stdout 输出此脚本,并在每次使用用户输入和日期/时间运行时保存一个新文件? (但不覆盖)EX:report-bob-0729161500.rpt

我看到了与命令一起使用 tee 的其他相同建议,但我试图让它在脚本中工作。同样,另一个建议使用 exec > >(tee -i logfile.txt),但我不确定如何正确格式化它以在每次执行脚本时将日期/时间和 $1 输入包含到新文件中。

有任何帮助或建议的资源吗?

谢谢。

    SEARCH=`[search_variable]`                                                                  

    if [ -z "$SEARCH" ]                                                                               
    then                                                                                              
    echo "$1 not found."                                                                              
    else                                                                                              
    echo -e "REPORT LISTING\n\n"                                                                  
    echo "$SEARCH"                                                                                    
    fi  

编辑:我确实尝试将 echo 语句简单地传递给 tee 命令,这确实有效。但是,我仍然很好奇是否有人有其他建议来通过替代方法完成同样的任务。谢谢你。

通过管道传送到 tee 的 echo 语句:

    SEARCH=`[search_variable]`                                                                  
    DATE=`date +"%m%d%y%k%M"`        

    if [ -z "$SEARCH" ]                                                                               
    then                                                                                              
    echo "$1 not found."                                                                              
    else                                                                                              
    echo -e "REPORT LISTING\n\n" | tee tps-list-$1-$DATE.rpt                                                               
    echo "$SEARCH" | tee tps-list-$1-$DATE.rpt                                                                                    
    fi  

【问题讨论】:

    标签: linux bash exec stdout tee


    【解决方案1】:

    如果你想在脚本做,那为什么不直接写信给 标准输出和文件(在适当的地方使用附加?)。 也许多写一点,但它提供了完全的控制权。

    里昂

    【讨论】:

    • 老实说,我不确定解决这个问题的最佳方法,因此我将这两个建议包含在 tee 中。我知道我想在脚本中包含它,但是重定向每一行似乎是多余的。我希望有一些建议或资源可以更清楚地说明在脚本中使用 tee 或我不知道会创建新文件(不附加单个日志文件)的其他命令。
    猜你喜欢
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2011-05-16
    • 2022-01-17
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-25
    相关资源
    最近更新 更多