繁体   English   中英

Bash将标准输出重定向到功能

[英]Bash redirect stdout to function

我有2个日志功能:

log_msg()
{
    if [ ! -e $LOG_FILE ]; then
        touch $LOG_FILE
        chmod 0640 $LOG_FILE
    fi

    echo "$(date +'[%Y-%m-%d %T]') $1" >> $LOG_FILE
}
log_stream()
{
    while read data; do
        printf "$(date +'[%Y-%m-%d %T]') $data" >> $LOG_FILE
    done
}

为了记录味精:

log_msg "Hello World!";

为了记录另一个功能的标准输出,我尝试执行以下操作:

bgcommand --a --b 2>&1 > log_stream &

但这不起作用。

我在以下问题中找到了用于记录管道的函数: 管道输出到bash函数但缺少某些内容。

您正在写入名为“ log_stream”的文件。 外壳程序不在此处查找程序/函数名称。 尝试这个:

bgcommand --a --b 2>&1 | log_stream &
#......................^

或者,重定向到流程替换

bgcommand --a --b 2>&1 > >(log_stream) &

您可能需要研究一个名为ts的实用程序,其目的是在其输入中添加时间戳。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM