目前我有一个脚本,我希望将所有输出重定向到文件和控制台。
#!/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]
我尝试过这种方法,遗憾的是它不起作用。我没有收到任何错误,但我的日志文件中没有显示任何内容。什么想法可能是错的?
答案 0 :(得分:1)
您可以将它放在脚本的顶部,将stdout和stderr重定向到一个文件,并在终端上显示它们。
#!/bin/bash
exec &> >(tee /mnt/ybdata/ybvwconf.log; exit)
# your script code goes here