Bash: Erro de sintaxe próximo ao token inesperado ')'

2

Eu criei um script de shell que usa informações armazenadas em um arquivo de configuração. O problema que estou enfrentando é quando tento passar certos valores armazenados no arquivo de configuração, para uso pelo shell script, eu recebo um erro de sintaxe.

Por exemplo:

config.conf

host=localhost
user=user
password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password)
db_name=database

script.sh

# Load config file TODO: make this more secure
source /path/to/config.conf

# MySQL database dump
mysqldump --lock-tables -h $host -u $user -p $password $db_name > dbbackup_'date +"%Y%m%d"'.bak

Isso é o que acontece quando tento executar o script:

$ bash script.sh
Syntax error near unexpected token ')'
'password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4='

O problema parece estar relacionado a certos caracteres usados na minha senha gerada aleatoriamente. Eu tentei quebrar $password entre aspas e quando isso não funcionou eu fiz o mesmo com a senha real armazenada no arquivo de configuração, mas novamente eu não tive sucesso.

Qual é a melhor maneira de resolver este problema?

    
por Mitchell Cash 15.12.2016 / 10:59

1 resposta

3

Use aspas duplas o máximo que puder.

config.conf deve ser como

host="localhost"
user="user"
password="GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4="
db_name="database"

E do que o seu comando:

mysqldump --lock-tables -h "${host}" -u "${user}" -p"${password}" "${db_name}" > dbbackup_'date +"%Y%m%d"'.bak

e você deve estar seguro.

    
por 15.12.2016 / 11:17