Fim prematuro do arquivo [Shell Script]?

5 respostas
shell-script
V

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

L

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

V

Mesmo erro.

L

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.

V

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

F

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