Bash脚本记录和重定向STDOUT和STDERR到文件和屏幕,以便进行用户交互



我在成员"reto"的注释中看到了以下命令,它将完成我想要的大部分操作。不幸的是,我无法回复,因为我刚刚加入。

他们做了我想做的大部分事情,但我也希望在脚本中的某些时间将stdout重定向到屏幕;如果if语句失败,当用户被要求输入用户名和密码时。然后,一旦用户交互完成,就将stdout恢复为日志记录。

任何帮助都会很棒。更新

#this works for me
LOGFILE=./ClamAV_install_script.log
exec 3>&1 >$LOGFILE 2> >(tee -a $LOGFILE >&2)
# Everything below will go to the file 'ClamAV_install.log':
date
#all these go to screen
{
tail -40 ./ClamAV_install_script.log 

#To give option to scan full system
printf "nnnDo you wise to scan the full file system / ? n" 
read -p 'Type Y to scan: ' Conformation 
printf "nYou have entered: $Conformationn" 
} >&3
#!/bin/bash
set -e 
outfile=logfile
exec > >(cat >> $outfile)
exec 2> >(tee -a $outfile >&2)

#STDOUT和STDERR将被写入$outfile,在控制台上只会看到STDERR

您可以在重定向流之前将其复制到另一个文件描述符上以保存流。

$: exec 3>&1 >>$outfile 2> >(tee -a $outfile >&2)
$: date     # goes to log
$: date >&3 # goes to console
Tue, Sep 15, 2020  8:24:19 AM

c.f。https://www.gnu.org/software/bash/manual/html_node/Redirections.html

相关内容

  • 没有找到相关文章

最新更新