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

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

Например:

  • Что происходит, когда вы выполняете функцию, которая вызывает другую функцию?
  • bash: export: `--wait ': недействительный идентификатор
  • Почему терминал не показывает цветовую схему, зарегистрированную как root?
  • Unix - как извлекать файлы на основе части имени файла, которая является датой
  • Сильная команда таймаута в zsh
  • Как найти разные файлы в UNIX на основе. расширение?
  • 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 в кавычки, и когда это не сработало, я сделал то же самое с фактическим паролем, хранящимся в файле конфигурации, но опять же я не имел успеха.

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

  • Как убить этот процесс в bash
  • Сравните два файла и распечатать совпадения
  • Создайте две последовательности чисел, разделенные символом "|"
  • Найти команды / функцию, имя которой соответствует значению
  • Есть ли какая-либо команда Linux для создания нового файла в папке и автоматического создания этой папки, если она не существует?
  • grep: входной файл 'X' также является выходным
  • 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 - лучшая ОС в мире.