'.png)
He creado un script de shell que utiliza información almacenada en un archivo de configuración. El problema al que me enfrento es que cuando intento pasar ciertos valores almacenados en el archivo de configuración, para que los use el script de shell, aparece un error de sintaxis.
Por ejemplo:
configuración.conf
host=localhost
user=user
password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4= (not my real password)
db_name=database
guión.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
Esto es lo que sucede cuando intento ejecutar el script:
$ bash script.sh
Syntax error near unexpected token `)'
`password=GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4='
El problema parece estar relacionado con ciertos caracteres utilizados en mi contraseña generada aleatoriamente. Intenté escribir $password
entre comillas y cuando eso no funcionó, hice lo mismo con la contraseña real almacenada en el archivo de configuración, pero nuevamente no tuve éxito.
¿Cuál es la mejor manera de resolver este problema?
Respuesta1
Utilice comillas dobles tanto como pueda.
config.conf debería ser como
host="localhost"
user="user"
password="GhR6R3#h]dSq+C74)Jz9CDF6a7^&L[4="
db_name="database"
Y que tu comando:
mysqldump --lock-tables -h "${host}" -u "${user}" -p"${password}" "${db_name}" > dbbackup_`date +"%Y%m%d"`.bak
y deberías estar a salvo.