shell脚本:写stderr和; stdout to file

时间:2014-05-01 14:24:10

标签: bash shell zsh

我知道这已被多次询问,但我可以在我的案例中找到合适的答案。

我使用 rsync 编写了备份脚本,并希望从所有脚本命令中查看所有输出,错误与否。我必须在脚本本身内部编写命令,并且不希望在shell中看到输出。 我一直在努力,没有成功。下面是剧本的一部分。

#!/bin/bash
.....
BKLOG=/mnt/backup_error_$now.txt
# Log everything to log file
# something like
exec 2>&1 | tee $BKLOG 
# OR
exec &> $BKLOG

我一直在脚本中添加各种exec | tee $BKLOG并在命令行的各个部分添加&>, 2>&1,但都失败了。我得到一个空的日志文件或不完整。我需要在日志文件中看到 rsync 已完成的操作,以及脚本在同步之前失败时的错误。

谢谢你的帮助。我的shell是zsh,所以欢迎zsh中的任何解决方案。

1 个答案:

答案 0 :(得分:2)

要将所有stdout / stderr重定向到文件,请将此行放在脚本之上:

BKLOG=/mnt/backup_error_$now.txt
exec &> "$BKLOG"