我刚刚跌跌撞撞
exec 1> >(logger -s -t $(basename $0)) 2>&1
用于将当前脚本的输出重定向到系统记录器(如果您从未见过,但有兴趣查看https://stackoverflow.com/questions/8888251/understanding-bash-exec-12-命令来拓宽你的 shell 知识)。
我想知道为什么这1>
是必要的。这似乎是必要的,因为exec >(logger -s -t test) 2>&1
失败是由于
bash: /dev/fd/63: Permission denied
bash: exec: /dev/fd/63: cannot execute: Permission denied
然而,省略1>
是我直觉上会做的事情,因为exec >[some redirection target]
根据上面链接的问题,重定向已经足够了。2>&1
然后像往常一样将标准错误重定向到标准输出。
我正在使用 bash 4.4.19。
它是必要的(额外的
>
,而不是1
,1>
可以简单地写成>
)。>(...)
进程替换将扩展为/dev/fd/13
(文件名),然后>
将标准输出重定向到其中。从此> >(...)
。