首页 > 解决方案 > BASH/GNU Tar - 管道输出到函数

问题描述

我试图提取一个常见的 tar.gz 文件。我目前有:

function streamLog()
{
    if [ -n "$1" ]
    then
        IN="$1"
    else
        read IN # This reads a string from stdin and stores it in a variable called IN
    fi

    if [ -z "${IN}" ]
    then
        return 0
    else
        echo "${IN}" >> zlib.log
    fi
}

/bin/tar --no-same-owner -zxvf ~/src/zlib-1.2.11.tar.gz -C /build | streamLog

这会导致 zlib 中包含的许多文件无法提取。奇怪的是有些人这样做。我看到没有输出发送到我的 streamLog 函数,这是意外的。到目前为止,这是我使用此方法失败的唯一命令。

我希望 tar 可能是一个特例。为什么会发生这种情况?

我应该怎么做才能正确地将命令的输出流式传输到函数?

标签: bashpipeoutputtar

解决方案


推荐阅读