【问题标题】:How to redirect the standard output of all the content within a shell script to a log file?如何将 shell 脚本中所有内容的标准输出重定向到日志文件?
【发布时间】:2012-10-26 03:27:12
【问题描述】:

让我们考虑一下 shell 脚本中有许多系统命令,每个命令都将一些内容返回到 stdout 或 stderr。

有没有办法将所有从 shell 脚本生成的 stdout 或 stderr 重定向到日志文件,而不是分别对每个命令执行重定向?

【问题讨论】:

    标签: shell io-redirection redirectstandardoutput


    【解决方案1】:

    显然简单的解决方案是使用

    ./scriptfile.sh > foo.log
    

    因此,使用脚本文件生成的所有标准输出都会转到 foo.log

    但是,我想您的问题是针对一个可以使用脚本的解决方案。 您可以使用 exec 命令(重新)将文件描述符定向到给定文件(以下 sn-p 中的第 2 行会将 stdout 重定向到 foo.log):

    #!/bin/sh
    exec 1>>foo.log
    
    echo blue
    echo blart
    

    【讨论】:

    • 顺便说一句,这个技巧 (exec 1>>foo.log) 是从 autoconf 生成的 configure 中无耻地窃取的......
    猜你喜欢
    • 2014-11-08
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 2018-01-09
    • 2020-09-21
    相关资源
    最近更新 更多