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

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

Например:

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 

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

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

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

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

  • Как найти общее имя для конкретного глифа?
  • Заменить косую черту «/» в файле
  • Что такое `^ M` и как я могу избавиться от него?
  • Сколько команд может быть поставлено в очередь операторами управления?
  • Переименовать папку с нечетными символами
  • Как удалить файл, который я случайно создал с именем $ file?
  • Sed: поиск и замена паттенов специальными символами, которые имеют произвольную строку между
  • Как поймать возврат каретки / строку в заявлении case
  • One Solution collect form web for “Bash: ошибка синтаксиса около неожиданного токена `) '”

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

    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 

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

    Linux и Unix - лучшая ОС в мире.