Я работаю над сценарием bash, чтобы выгрузить базу данных в файл, который будет загружен через FTP. Он будет запущен с помощью задания cron, а сервер sql не является localhost.mysql возвращает 0, когда должен возвращать 1 в скрипте BASH
У меня работает скрипт, но я бегу в дорожный блок с проверкой ошибок. Если скрипт не может подключиться к серверу sql (в маловероятном случае, когда он опускается), я хочу, чтобы он остановился и выдал все, что было в журнале ошибок. Выход в журнал ошибок работает нормально, но сценарий все еще работает и создает пустой файл. Я пытаюсь использовать $? чтобы проверить, не сработало ли соединение mysql, и даже когда я использую сервер тестирования, который выключен, возвращается 0 вместо 1. Я ношу отверстие в стене, из которого я бил головой, что я делаю неправильно?
Если это было задано раньше, пожалуйста, указывайте мне в правильном направлении, но я не мог найти ответы, когда я искал.
содержимое сценария Баш:
{
mysql -h $HOST -u $USERNAME -p$PASSWORD < dump.sql | sed "s/\t/\",\"/g;s/^/\"/;s/$/\"/" > test.csv
} 2>error.log
if [ $? -ne 0 ]; then { echo "SQL Server connection failed. Aborting" ; exit 1; } fi
«$?» Записывает возвращаемое значение из sed, я думаю, а не mysql, посмотрите здесь: http://stackoverflow.com/questions/1221833/bash-pipe-output-and-capture-exit-status –
или вы можете выполнить mysql ... < dump.sql > test.csv 2> err; mySqlStat = $? ; sed '....' test.csv'. Удачи. – shellter