有没有办法在 exec 调用之间保留文件重定向命令?
例如,有两个 bash 脚本。在脚本 1 中,我将 stdout 和 stderr 重定向到文件。然后执行 script2。
脚本1
exec &> >(tee "$logs_file")
echo "something"
exec "./script2.sh"
脚本2
echo "something else
在日志文件内,仅显示脚本 1 中的 echo 命令,但不显示脚本 2。
something
有没有办法在 exec 调用之间保留文件重定向命令?
答案1
修复示例中的几个小错误,我没有看到您描述的问题
# Set up the scenario
mkdir /tmp/555270
cd /tmp/555270
cat <<'EOF' >script1
#!/bin/bash
logs_file=logs_file
exec &> >(tee "$logs_file")
echo "something"
exec "./script2"
EOF
cat <<'EOF' >script2
#!/bin/bash
echo "something else"
EOF
chmod a+x script?
rm -f logs_file
# Run the script
./script1
something
something else
# Examine the log file
cat logs_file
something
something else