Fim prematuro do arquivo [Shell Script]?

5 respostas
shell-script
Victor_S_C

Bom dia pessoal, estou tentando fazer um script para backup do MySQL, para quando os bancos forem diferentes de “zabbixdb” ele executar um comando, porém logo após ele precisa executar um outro comando apenas para o banco do zabbix, só que está retornando a mensagem “fim prematuro do arquivo”, acho que fiz alguma condição errada

#! /bin/bash

TIMESTAMP=$(date +"%Y%m%d")
BACKUP_DIR="/dados/bkp_mysql/bacula"
MYSQL_USER="root"
LINUX_USER="root"
MYSQL=/usr/bin/mysql
MYSQL_PASSWORD="senha"
MYSQLDUMP=/usr/bin/mysqldump

mkdir -p "$BACKUP_DIR"
rm -rf /dados/bkp_mysql/bacula/*

databases=`$MYSQL --user=$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

for db in $databases; do
if [$db<>'zabbixdb']; then
$MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --databases $db | gzip > "$BACKUP_DIR/$db.gz"
else
$MYSQLDUMP --user=$MYSQL_USER -p$MYSQL_PASSWORD --single-transaction=TRUE zabbixdb | gzip > "$BACKUP_DIR/$db.gz"
fi

chown -R $LINUX_USER "$BACKUP_DIR"
chmod 777 "$BACKUP_DIR" -R

find /dados/bkp_mysql -mtime +15 -exec rm -frv {} \; > /dados/mybkp.log
find /dados/bkp_mysql/. -empty -type d -delete

5 Respostas

Lucas_Camara

Rode esse script assim: bash -x script.sh e veja qual erro está acontecendo.

Victor_S_C

Mesmo erro.

Lucas_Camara

Pelo que pesquisei, a sintaxe do loop tem que terminar com a palavra DONE. Assim:

for VARIAVEL in VALOR_1, VALOR_2  VALOR_N;
do
	AÇÕES
done

Talvez seja isso.

Victor_S_C

Obrigado Lucas, realmente era um erro de sintaxe, mas acabei resolvendo de uma outra forma.

FearX

Que bom que conseguiu resolver, @Victor_S_C. Posta a solução para gente, também! Aí, marca seu tópico como resolvido clicando no botão “:white_check_mark:

[]'s

Criado 23 de abril de 2019
Ultima resposta 24 de abr. de 2019
Respostas 5
Participantes 3