所以我试图用PV为各种命令(即.tar)创build一个进度条。 我正在ruby脚本中运行这些命令。 问题是,因为pv是pipe道链中的最后一个命令,所以它正在吸收所有的错误。
即。
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和一般真正的posix 破折号(1)确实实现了它。