【发布时间】:2014-01-08 09:06:03
【问题描述】:
在bash 中,我们可以从环境变量$PIPESTATUS 中检索管道命令行的退出状态,如下所示。
$ echo "some string" | grep x | tee some.tmp ; echo ${PIPESTATUS[1]}
1
但是,如果我在 ksh 上,我需要像下面这样才能获得退出状态。我搜索它以获得类似下面的内容。
$ getme=`((echo "some string" | grep x 3>&- 4>&- ; echo $? >&4) | tee some.tmp 1>&3 3>&- 4>&- ) 4>&1` ; echo $getme
1
$ getme=`((echo "some string " | grep me 3>&- 4>&- ; echo $? >&4) | tee some.tmp 1>&3 3>&- 4>&- ) 4>&1` ; echo $getme
0
在ksh 中是否有一种更简单的形式来检索管道命令行中的退出状态?以及如何解释上面的行。我对 subshell 和使用 4 作为描述符知之甚少。
重定向部分很难解释
【问题讨论】: