当我们想要将stdout重定向到文件时,以下行可以正常工作,并且还可以在stdout上打印。
exec > >(tee logfile-1.txt)
但是,如果我们希望稍后将stdout重定向到另一个文件,比如说,
exec > >(tee logfile-2.txt)
面临的问题是输出仍然会被重定向到第一个文件(logfile-1.txt)以及第二个文件(logfile-2.txt)。
是否有一种方法可以使同一个bash脚本同时包含该语句,并且输出对应于执行这些命令的每个文件是独占的?
答案 0 :(得分:2)
我会做
{
command1
command2
} | tee logfile-1.txt
{
command3
command4
} | tee logfile-2.txt
或者,首先备份原始文件描述符:
exec 6<&1
exec > >(tee log1)
echo 1
echo 2
exec 1<&6 6<&-
exec > >(tee log2)
echo 3
echo 4
有关exec