可能是一个基本问题,但是我不确定为什么日志记录会导致此退出功能无法按预期工作:
#!/bin/bash
function exitFunct
{
exit 1
}
exitFunct 2>&1 | tee -a /var/tmp/output.txt
echo "You should never see this"
但是输出是“您永远都不会看到这个”
作为man bash
解释,
流水线中的每个命令都作为单独的进程(即,在子Shell中)执行。
因此,exit
函数中的in仅退出运行该函数的管道部分的子外壳。
并且,
管道的返回状态是最后一条命令的退出状态,除非
pipefail
启用了该选项。
因此,您可以通过添加前缀来更改行为
set -eo pipefail
到脚本(-e
使脚本在错误时停止)。尽管如此,请注意使用exit 0
不会结束它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句