我正在编写一个备份数据库的脚本。我有以下代码行:
mysqldump --user=$dbuser --password=$dbpswd \
--host=$host $mysqldb | gzip > $filename
我想将stderr赋值给一个变量,这样如果出了问题,它会发送一封电子邮件给我,让我知道发生了什么。我已经找到了将stderr重定向到stdout的解决方案,但是我不能这样做,因为stdout已经被发送(通过gzip)到文件中。如何将stderr单独存储在变量$result中?
foo > out.log 2> err.log
的命令,然后使用cat out.log err.log > combined.log
将输出和错误信息合并到一个文件中。为了避免覆盖当前目录中的文件,您需要使用mktemp
在 /tmp 中创建 out.log 和 err.log 文件,并在完成后将它们删除。 - Adam Crumeecho err1 >&2 echo out >&1 echo err2 >&2
我希望日志输出为:err1 out err2
并且错误变量将是:err1 err2
- koby meir$error
变量中。 - koby meir$error
变量捕获。如果您尝试类似于error=$((foo >> log) |& tee -a log)
的操作,则stdout和stderr将无法正确交错。我建议您开一个新问题。 - Adam Crume