Bash 向终端和文件日志发送回显和错误

Bash 向终端和文件日志发送回显和错误,bash,shell,unix,logging,terminal,Bash,Shell,Unix,Logging,Terminal,我正在尝试修改某人在shell中为unix创建的脚本。该脚本主要用于在没有人机交互的备份服务器上运行,但是我需要制作另一个脚本,以允许用户输入信息。所以,它只是修改到旧版本以供用户输入。但我遇到的最大问题是试图将错误日志和回音保存在日志文件中。脚本中有很多,但我希望在终端上显示这些内容,并将它们发送到指定的日志文件中,以便稍后查看 我所拥有的是: exec 1> ${LOG} 2>&1 这一行基本上是将所有内容发送到日志文件。这很好,但我也有人尝试在脚本中输入信息,它会将所

我正在尝试修改某人在shell中为unix创建的脚本。该脚本主要用于在没有人机交互的备份服务器上运行,但是我需要制作另一个脚本,以允许用户输入信息。所以,它只是修改到旧版本以供用户输入。但我遇到的最大问题是试图将错误日志和回音保存在日志文件中。脚本中有很多,但我希望在终端上显示这些内容,并将它们发送到指定的日志文件中,以便稍后查看

我所拥有的是:

exec 1> ${LOG} 2>&1
这一行基本上是将所有内容发送到日志文件。这很好,但我也有人尝试在脚本中输入信息,它会将所有内容发送到日志文件,包括提示所需的回显。这一行也在脚本的开头,但它将更多地读入stderr和stdout消息。我试过:

exec 2>&1 1>>${LOG}
exec 1 | tee ${LOG} But only getting error when running it this "./bash_pam.sh: line 39: exec: 1: not found"
我已经通过网站解决了这个问题,但我不明白为什么它不打印到两者。以我插入它的方式,它要么只将它发送到日志位置而不发送到终端,要么将它发送到终端,但日志中没有任何内容


编辑:为此,一些解决方案提到,某些修复将在bash中工作,但在/bin/sh中不起作用。

如果您希望将所有输出打印到控制台上,同时也打印到
logfile.txt
中,您可以在脚本上运行以下命令:

bash your_script.sh 2>&1 | tee -a logfile.txt
或者在文件中调用它:

<bash_command> 2>&1 | tee -a logfile.txt
2>&1 | tee-a logfile.txt

要附加到
logfile.txt
而不是覆盖,请将
-a
选项添加到
tee

如果我理解正确,您只希望错误显示在标准输出中并记录到文件中?嗯,我希望回声到达终端,但同时希望回声和错误发送到日志位置。通过“echos”您的意思是没有错误输出,这是不清楚的。是的,很抱歉造成混淆,修改脚本,更不用说尝试创建脚本了,这不是我的专长。
command 2>&1 | tee-out.log
将(错误和常规消息)输出到屏幕和文件。这将覆盖终端上打印的每一行的
logfile.txt
。您需要
tee-a
将新行附加到日志文件中。