在 exec 调用之间保留文件重定向

在 exec 调用之间保留文件重定向

有没有办法在 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

相关内容