我无法通过“超时命令”获得“退出状态”

时间:2018-12-19 06:13:59

标签: bash unix timeout

我希望获得“状态124”,但使用以下代码获得“状态0”

timeout 10 sleep 20 | tee -a LOG_FILE LOG_FILE2
RET=$?
echo $RET

通过使用此代码,我得到了“状态0”。

我希望得到“状态124”。

这段代码发生了什么

1 个答案:

答案 0 :(得分:1)

$?保存最后一个管道的退出状态。使用PIPESTATUS获取前台管道的退出状态(在本例中为timeout命令)。

$ timeout 10 sleep 20 | tee -a LOG_FILE LOG_FILE2
$ RET=${PIPESTATUS[0]}
$ echo ${PIPESTATUS[0]}

124  # timed out

男子bash

  

PIPESTATUS :一个数组变量(请参见下面的Array),其中包含最近执行的前台管道(可能仅包含一个命令)中进程的退出状态值的列表。 / p>