Ok, eu tive que reordenar as coisas um pouco. A resposta de Iain não funcionou, como mysqldump é canalizado para gzip, então eu obtive o valor de retorno de gzip então usei PIPESTATUS e então tive que reordenar o comando para o loop while para obter a variável Errors fora da subshell.
#/bin/bash
ERRORS=0
BKPDIR="/var/backups/db-mysql"
mkdir -p $BKPDIR
FIELDS="TABLE_SCHEMA, TABLE_NAME, UPDATE_TIME"
W_COND="UPDATE_TIME >= DATE_ADD(CURDATE(), INTERVAL -2 DAY) AND TABLE_SCHEMA<>'information_schema'"
while read db table tstamp; do
echo "DB: $db: TABLE: $table: ($tstamp)"
mysqldump $db $table | gzip > $BKPDIR/$db-$table.sql.gz
EXITSTATUS=${PIPESTATUS[0]}
if [ "$EXITSTATUS" -ne "0" ]
then
echo "ERROR when backing up $db $table!"
ERRORS=$((ERRORS+1))
fi
touch -d "$tstamp" $BKPDIR/$db-$table.sql.gz
done < <(mysql --skip-column-names -e "SELECT $FIELDS FROM information_schema.tables WHERE $W_COND;")
if [ "$ERRORS" -ne "0" ]
then
echo "ERRORS when backing up MySQL!"
fi
exit $ERRORS