我有这个:
node ${SUMAN_RUNNABLE} | tee -a run.sh.log
EXIT_CODE=$?;
但看起来退出代码始终为 0,因为 tee 提供的是代码而不是节点可执行文件。
在这种情况下,有没有办法从节点可执行文件捕获退出代码?
答案1
从https://stackoverflow.com/a/1221870/5020949:
有一个名为
$PIPESTATUS
;的内部 Bash 变量它是一个数组,保存最后一个前台命令管道中每个命令的退出状态。<command> | tee out.txt ; test ${PIPESTATUS[0]} -eq 0
或者,另一种也适用于其他 shell(如 zsh)的替代方案是启用 pipelinefail:
set -o pipefail ...
第一个选项是不是
zsh
由于语法略有不同,因此可以使用。