Код возврата равен 0. Код возврата - это код возврата последней команды, даже если используется tee
(если не установлена переменная pipefail). Вы можете увидеть это в командной строке:
$ ls dir_doesnt_exist | tee log
ls: dir_doesnt_exist: No such file or directory
$ echo $?
0
Однако, если вы удалите трубу |
, вы получите ненулевой код выхода
$ ls dir_doesnt_exist
ls: dir_doesnt_exist: No such file or directory
$ echo $?
1
Так при использовании tee
вы должны проверить переменную $ PIPETSTATUS вместо обычного кода выхода
$ ls dir_doesnt_exist | tee log
ls: dir_doesnt_exist: No such file or directory
$ echo ${PIPESTATUS[0]}
1
Попробуйте сделать ваш python код подобным этому
import subprocess
from subprocess import PIPE
cmd = subprocess.run(['bash','run_cmds.sh; exit ${PIPESTATUS[0]}'], stdout=PIPE, stderr=PIPE)
print(cmd.stderr.decode())
print("The returned code is:", cmd.returncode)