所以我试图使用PV来创建各种命令的进度条(即。焦油)。我在一个ruby脚本中运行这些命令。问题是pv是管道链中的最后一个命令,它吸收了所有的错误。
。
result = `tar -cpz testDir 2>&1 | pv -pterb > testTar.tar.gz`
下面的命令将不会返回任何错误,如果它失败(即。pv命令占用了目录空间,导致目录空间不足。什么好主意吗?
正确,通常最后一个命令计数。您需要管道失败选项。
$ sh -c ' false | true'; echo $?
0
$ sh -c 'set -o pipefail; false | true'; echo $?
1
没有简单的方法在纯Posix中复制pipefail
,但我注意到bash和通常为Posix的破折号(1)确实实现了它。