我正在编写一个脚本来备份数据库。我有以下几行:
mysqldump --user=$dbuser --password=$dbpswd \ --host=$host $mysqldb | gzip > $filename
我想将stderr分配给一个变量,以便它将向自己发送一封电子邮件,让我知道如果出现问题,会发生什么。我已经找到了将stderr重定向到stdout的解决方案,但是由于stdout已经(通过gzip)发送到文件中,因此我无法做到这一点。如何将stderr分别存储在变量$ result中?
尝试将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。