这到底是做什么的:exec >>(command)

jm6*_*666 12 bash

我在这里这里也看到了以下结构:

exec > >(tee -a script.log)
Run Code Online (Sandbox Code Playgroud)

我知道tee命令是什么,而(命令...)通常意味着command在子shell中执行,而exec用一个程序替换当前的shell,比如exec ls(但这里没有命令),另外的意思是什么的> >

任何人都能澄清这种黑暗的威胁吗?

exec >{space}> (command)
Run Code Online (Sandbox Code Playgroud)

@Seth?:)任何指针,我可以阅读更多关于这个魔法将不胜感激.:)

evg*_*eny 8

它将当前bash会话替换为另一个会话,并将所有命令的输出写入script.log.

这样一来,你可以用你的bash正常的外壳,你不会看到任何差别(主要是),但所有的输出将显示在屏幕上,并在在script.log文件中.

来自exec manpages:

如果提供了命令,它将替换shell而不创建新进程.如果未指定命令,则可以使用重定向来影响当前的shell环境.

>(tee -a script.log)魔术创建一个管道,所以不是写一个文件一样,我们将(与>> script.log在这种情况下),我们写的过程中tee -a script.log,这不相同.由于某种原因我不知道,使用>>不起作用,但写入命名管道工作.来源于此