在 shell 脚本中,我使用带有大括号的代码块将所有输出通过管道传输到控制台和带有 tee 的日志文件。
#!/bin/bash
{
echo "Foo bar"
echo "foo bar on STDERR" >&2
ERRL=66
exit 99
} 2>&1 | tee log-file.log
Run Code Online (Sandbox Code Playgroud)
(这只是一个小演示脚本,原来的要复杂得多)
问题是,该行exit 99没有效果,脚本以退出代码 0 结束。(我认为这是 tee 命令的退出代码)
exit $ERRL我尝试在脚本末尾添加该行,但它显示变量 $ERRL 在大括号之外为空。
当代码块内出现问题时,我能做什么以错误代码结束脚本——而不丢失日志文件的输出?