代码之家  ›  专栏  ›  技术社区  ›  jan

如何可选地显示进度条,即停止并在bash脚本中显示错误输出?

  •  1
  • jan  · 技术社区  · 8 年前

    tqdm 显示一个不错的进度条,例如解压缩一个大文件。不过,我不知道如何停止这一切,并显示来自unzip命令的错误(如果有的话)。

    #!/bin/bash
    function progressBarFiles() {
        local total_files="$1"
        if hash tqdm 2>/dev/null; then
            tqdm --total $total_files --unit files --desc counting | wc -l >/dev/null
        else
            cat
        fi
    }
    unzip -o huge.zip | progressBarFiles 1697
    

    counting:   1%|█▉                   | 22/1697 [00:00<00:28, 58.36files/s]
    chmod (directory attributes) error: Permission denied
    chmod (directory attributes) error: Permission denied
    chmod (directory attributes) error: Permission denied
    counting:   2%|██▎                  | 26/1697 [00:00<00:35, 46.64files/s]
    chmod (directory attributes) error: Permission denied
    

    我想在进度条之后停止脚本并将这个错误输出全部打印在一起,而不是在解压时(这会破坏进度条)。

    附言:这个主意 cat 让进度条完全可以随意修改?

    1 回复  |  直到 8 年前
        1
  •  0
  •   jan    8 年前

    解决了这个问题,如注释中所述,使用了重定向,但使用了一个将被删除100%的干净临时文件,请参见 https://stackoverflow.com/a/51137057/1184842 更多细节。

    推荐文章