mysqldump дает код выхода 0 при ошибке, например, потому что база данных не существует - PullRequest
0 голосов
/ 24 октября 2019

Я пишу простой сценарий для резервного копирования базы данных mysql:

#!/bin/sh

ROOTDIR=/home/dbusername
LOGDIR=$ROOTDIR/logs
DB_BACKUP_PATH=$ROOTDIR/db_backup
LOGFILE=$LOGDIR/db_backup.log
TODAY=`date +"%Y-%m-%d"`

MYSQL_HOST='localhost'
MYSQL_PORT='3306'
DATABASE_NAME='idontexist'

#################################################################

mkdir -p ${DB_BACKUP_PATH}/${TODAY}
echo "Backup started for database - ${DATABASE_NAME}"


mysqldump -h ${MYSQL_HOST} -P ${MYSQL_PORT} ${DATABASE_NAME} > ${DB_BACKUP_PATH}/${TODAY}/${DATABASE_NAME}-${TODAY}.sql 2> $LOGFILE
 echo "exit code:"
 echo $?

Когда я запускаю сценарий, код выхода, отображаемый на экране, равен 0, даже если сценарий не выполнен, поскольку база данных не 'не существует. Правильное подробное сообщение сохраняется в моем лог-файле.

Есть идеи, почему при сбое я вижу код выхода 0? Спасибо!

1 Ответ

2 голосов
/ 24 октября 2019

Вы выводите код выхода echo, а не код выхода mysqldump.

Измените

echo "exit code:"
echo $?

на

echo "exit code: $?"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...