将输出重定向到文件和控制台

时间:2017-06-06 12:06:43

标签: bash

目前我有一个脚本,我希望将所有输​​出重定向到文件和控制台。

#!/bin/bash
touch /mnt/ybdata/ybvwconf.log 
{
  ... [Do some script code here]
} 2>&1 | tee -a /mnt/ybdata/ybvwconf.log 

上面,您可以看到我当前的代码,它完全正常。它将所有输出打印到控制台,并将其输出到ybvwconf.log文件。但是,我一直在寻找一种消除花括号的方法。有点像这样:

#!/bin/bash
touch /mnt/ybdata/ybvwconf.log
exec 2>&1 | tee -a /mnt/ybdata/ybvwconf.log

... [Do some script code here] 

我尝试过这种方法,遗憾的是它不起作用。我没有收到任何错误,但我的日志文件中没有显示任何内容。什么想法可能是错的?

1 个答案:

答案 0 :(得分:1)

您可以将它放在脚本的顶部,将stdout和stderr重定向到一个文件,并在终端上显示它们。

#!/bin/bash
exec &> >(tee /mnt/ybdata/ybvwconf.log; exit)

# your script code goes here