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

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

Например:

  • Есть ли способ протестировать PS1 Bash Prompts перед их выполнением?
  • Перепутал файл bash.bashrc, команды больше не работают
  • Почему я продолжаю уничтожать свои текстовые файлы?
  • Миллисекундное время в сценарии оболочки
  • Как перевести время из часового пояса в Сиднейский часовой пояс с помощью оболочки korn?
  • $ _ vs! $. Последний аргумент предыдущего перенаправления команды и вывода
  • 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 в кавычки, и когда это не сработало, я сделал то же самое с фактическим паролем, хранящимся в файле конфигурации, но опять же я не имел успеха.

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

  • Что определяет, как необходимо отделить аргументы программы?
  • Проверка бинарных файлов команд перед выполнением
  • Shell сравнивает два списка и выводит разницу в третьем списке
  • Использование тире (-) вместо имени файла
  • Если PATH содержит $ HOME / mydir и добавляет его, если нет (все в скрипте)
  • Программа Shell для отображения текстовых файлов с линейкой столбцов
  • 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 - лучшая ОС в мире.