是否可以从 stdout/stderr 创建粘性重定向

gre*_*man 6 io-redirection shell-script stdout stderr

考虑这样的代码:

echo hello >> log.txt
echo world >> log.txt
Run Code Online (Sandbox Code Playgroud)

我使用标准输出重定向执行命令。是否可以创建粘性重定向?像这样的东西:

redir stdout log.txt
echo hello
echo world
stop-redir
Run Code Online (Sandbox Code Playgroud)

这相当于第一块代码。

我真正需要的是——为 stdout 和 stderr(同时)进行这样的粘性重定向,执行一些命令,停止重定向,并读取日志文件。

Uwe*_*Uwe 9

exec 3>&1 4>&2 >log.txt 2>&1
echo hello
echo world
exec 1>&3 2>&4
less log.txt
Run Code Online (Sandbox Code Playgroud)

即:制作当前1(stdout)和2(stderr)的文件描述符3和4个副本,将1重定向到log.txt,将2重定向到与1相同;然后执行命令;然后从文件描述符 3 和 4 中保存的值中恢复 stdout 和 stderr。