shell 中验证管道是否正确执行
象这样的 shell 代码: prog1 | prog2 | prog3 | prog4
$? 只能得到最后一个命令的返回值,该 如何检查整个命令是否全部正确执行?
有一个数组变量PIPESTATUS,保存了最近一个管道命令中所有子命令的返回值
该返回值与 $? 一样,每次命令都会改写它,因此,要保存它就必须马上!
用以下代码可以检查管道命令:
1 2 3 4 5 6 7 |
prog1 | prog2 | prog3 | prog4 if [[ "0 0 0 0" == ${PIPESTATUS[*]} ]] then echo success else echo failed >&2 fi |