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

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

Eu criei um script de shell que usa informações armazenadas em um arquivo de configuração. O problema que estou enfrentando é que quando tento passar determinados valores armazenados no arquivo de configuração, para uso pelo script Shell, 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

Isto é 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 determinados caracteres usados ​​na minha senha gerada aleatoriamente. Tentei colocar $passwordaspas e quando não funcionou, fiz o mesmo com a senha real armazenada no arquivo de configuração, mas novamente não tive sucesso.

Qual é a melhor maneira de resolver esse problema?

Responder1

Use aspas duplas tanto quanto possível.

config.conf deveria 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.

informação relacionada