Bash: Синтаксическая ошибка около неожиданного токена `)'

Bash: Синтаксическая ошибка около неожиданного токена `)'

Я создал скрипт оболочки, который использует информацию, хранящуюся в файле конфигурации. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь передать определенные значения, хранящиеся в файле конфигурации, для использования скриптом оболочки, я получаю синтаксическую ошибку.

Например:

config.conf

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

скрипт.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

Вот что происходит, когда я пытаюсь запустить скрипт:

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

Проблема, похоже, связана с определенными символами, используемыми в моем случайно сгенерированном пароле. Я пробовал заключать $passwordв кавычки, и когда это не сработало, я сделал то же самое с реальным паролем, сохраненным в файле конфигурации, но снова безуспешно.

Каков наилучший способ решения этой проблемы?

решение1

Используйте двойные кавычки как можно чаще.

config.conf должен быть таким

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

И затем твой приказ:

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

и вы должны быть в безопасности.

Связанный контент