我想在Bash中执行一个长时间运行的命令,并且都捕获它的退出状态
所以我这么做:
command | tee out.txt
ST=$?
问题在于,变量ST捕获了tee
而不是命令。我怎么解决这个问题?
发布于 2018-02-07 02:42:41
有一个内部Bash变量称为$PIPESTATUS
;它是一个数组,它保存了最后一个命令前景管道中每个命令的退出状态。
<command> | tee out.txt ; test ${PIPESTATUS[0]} -eq 0
或者另一种也适用于其他shell(如zsh)的方法是启用pipeFailure:
set -o pipefail
...
zsh
因为语法有点不同。
https://stackoverflow.com/questions/-100003464
复制相似问题