Bash: Syntaxfehler in der Nähe des unerwarteten Tokens `)'

Bash: Syntaxfehler in der Nähe des unerwarteten Tokens `)'

Ich habe ein Shell-Skript erstellt, das in einer Konfigurationsdatei gespeicherte Informationen verwendet. Das Problem, mit dem ich konfrontiert bin, ist, dass ich einen Syntaxfehler erhalte, wenn ich versuche, bestimmte in der Konfigurationsdatei gespeicherte Werte zur Verwendung durch das Shell-Skript zu übergeben.

Zum Beispiel:

config.conf

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

Skript.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

Folgendes passiert, wenn ich versuche, das Skript auszuführen:

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

Das Problem scheint mit bestimmten Zeichen in meinem zufällig generierten Passwort zusammenzuhängen. Ich habe versucht, es $passwordin Anführungszeichen zu setzen, und als das nicht funktionierte, habe ich dasselbe mit dem eigentlichen Passwort gemacht, das in der Konfigurationsdatei gespeichert ist, aber auch hier hatte ich keinen Erfolg.

Wie lässt sich dieses Problem am besten lösen?

Antwort1

Verwenden Sie so oft wie möglich doppelte Anführungszeichen.

config.conf sollte so aussehen

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

Und dann Ihr Befehl:

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

und Sie sollten in Sicherheit sein.

verwandte Informationen