O que está causando o erro “Erro de EOF inesperado ao procurar…”? [duplicado]

0
    

Esta pergunta já tem uma resposta aqui:

    

Estou recebendo um problema durante a execução de uma tarefa cron para exportar todos os bancos de dados da minha conta do Cpanel de hospedagem compartilhada da Godaddy. Mas eu tenho dificuldade em encontrar o erro de sintaxe no comando abaixo.

O mesmo comando está funcionando no meu AWS Ec2.

mysql -N -ubackup -pt -e 'show databases' | while read dbname; do mysqldump -ubackup -p123 --complete-insert -N "$dbname" > /home/test/sqlbackups/'$(date +"%Y-%m-%d")-$dbname'.sql;done

Erro recebido no email:

/bin/bash: -c: line 0: unexpected EOF while looking for matching '''
/bin/bash: -c: line 1: syntax error: unexpected end of file
    
por axcl 06.09.2017 / 12:12

1 resposta

3

Os comandos do Crontab terão todas as ocorrências sem escape de % substituídas por novas linhas. Isto é de o manual crontab(5) no meu sistema:

The command field (the rest of the line) is the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab. Percent signs (%) in the command, unless escaped with a backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

Seu comando crontab deve se parecer com

mysql -N -ubackup -pt -e 'show databases' | while read dbname; do mysqldump -ubackup -p123 --complete-insert -N "$dbname" > /home/test/sqlbackups/"$(date +"\%Y-\%m-\%d")-$dbname".sql;done

Aqui, eu também corrigi o $(...) que estava com aspas simples (e, portanto, não expandido pelo shell).

Em geral, é melhor colocar todos os cron jobs não triviais em seus próprios scripts e, em seguida, programá-los. Dessa forma, você tem mais controle sobre coisas como essa e também é capaz de escolher o intérprete correto para qualquer tarefa específica (por exemplo, ksh ou bash em vez de sh ). Além disso, qualquer linha de assunto nos e-mails enviados para você a partir do daemon do cron é mais legível.

    
por 06.09.2017 / 12:34

Tags