Я ожидаю получить «статус 124», но получил «статус 0» со следующим кодом
timeout 10 sleep 20 | tee -a LOG_FILE LOG_FILE2 RET=$? echo $RET
Я получил «статус 0», используя этот код.
Я ожидаючтобы получить «статус 124».
Что происходит в этом коде
$? содержит состояние выхода последнего конвейера.Используйте PIPESTATUS для получения состояния выхода переднего плана конвейеров (в данном случае команда timeout).
$?
PIPESTATUS
timeout
$ timeout 10 sleep 20 | tee -a LOG_FILE LOG_FILE2 $ RET=${PIPESTATUS[0]} $ echo $RET 124 # timed out
man bash
PIPESTATUS : переменная массива (см. Массивы ниже), содержащая список значений состояния выхода из процессов в самом последнем выполняемом конвейере переднего плана (который может содержать только одну команду).