gpt4 book ai didi

ruby - 如何获取通过 "pv"命令管道传输的命令的错误输出

转载 作者:太空狗 更新时间:2023-10-29 12:34:31 24 4
gpt4 key购买 nike

所以我正在尝试使用 PV 为各种命令(即 tar)创建进度条。我在 ruby​​ 脚本中运行这些命令。问题在于,由于 pv 是管道链中的最后一个命令,它吸收了所有错误。

即。

result = `tar -cpz testDir 2>&1 | pv -pterb > testTar.tar.gz`

如果失败(即目录空间不足),下面的命令将不会返回任何错误,因为它被 pv 命令吸收了。有什么想法吗?

最佳答案

是的,通常最后一条命令很重要。您需要 pipefail 选项。

$ sh -c '                 false | true'; echo $?
0
$ sh -c 'set -o pipefail; false | true'; echo $?
1

在纯 Posix 中没有复制 pipefail 的简单方法,但我注意到 bash 和 generally-true-to-Posix dash(1)确实实现了它。

关于ruby - 如何获取通过 "pv"命令管道传输的命令的错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15532224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com