我正在尝试修改在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"
我已经通过网站such as this来解决问题,但我不明白为什么它不打印到两者。我插入它的方式,它只是将它发送到日志位置而不是发送到终端,或者它将它发送到终端,但日志中没有任何内容。
编辑:有些解决方案,为此已经提到某些修复将在bash中起作用,但在/ bin / sh中不起作用。
答案 0 :(得分:0)
如果您希望将所有输出打印到控制台上,同时打印到logfile.txt
,您将在脚本上运行此命令:
bash your_script.sh 2>&1 | tee -a logfile.txt
或在文件中调用它:
<bash_command> 2>&1 | tee -a logfile.txt
要附加到logfile.txt
而不是覆盖,请将-a
选项添加到tee
。