不久前,我制作了一个脚本,并在其中添加了一些日志记录,但是我忘记了日志记录的重定向是如何工作的:-(
其要点是:
#!/bin/bash
LOGFILE=/some/path/mylogfile
(
# here go my commands which produce some stdout
# and, if something goes wrong, also some stderr
) 1>>${LOGFILE} 2> >( tee -a ${LOGFILE} >&2 )
当我运行脚本时,它不会将任何内容打印到stdout
,而只会打印到的内容stderr
。日志文件同时${LOGFILE}
捕获stdout和stderr。
当我运行脚本并且终端上没有输出时,我知道一切都很好。如果有任何输出,我知道出了点问题,可以检查日志文件以找出问题所在。
现在让我感到困惑的重定向部分的语法是: 2> >( some command )
谁能解释那里发生了什么?
echo <(date)
,它将给我替换文件的名称:/dev/fd/63
。如果执行cat <(date)
,它将给我日期,即替换文件的内容:Fri Nov 18 14:11:09 NZDT 2016
。