小编典典

Bash脚本-将stderr存储在变量中

python

我正在编写一个脚本来备份数据库。我有以下几行:

mysqldump --user=$dbuser --password=$dbpswd  \
   --host=$host $mysqldb | gzip > $filename

我想将stderr分配给一个变量,以便它将向自己发送一封电子邮件,让我知道如果出现问题,会发生什么。我已经找到了将stderr重定向到stdout的解决方案,但是由于stdout已经(通过gzip)发送到文件中,因此我无法做到这一点。如何将stderr分别存储在变量$ result中?


阅读 164

收藏
2020-12-20

共1个答案

小编典典

尝试将stderr重定向到stdout并$()用于捕获它。换一种说法:

VAR=$((your-command-including-redirect) 2>&1)

由于您的命令将stdout重定向到某个地方,因此它不应干扰stderr。可能有一种更简洁的编写方法,但是应该可以。

编辑:

这确实有效。我已经测试过了:

#!/bin/bash                                                                                                                                                                         
BLAH=$((
(
echo out >&1
echo err >&2
) 1>log
) 2>&1)

echo "BLAH=$BLAH"

将打印BLAH=err并且文件log包含out。

2020-12-20