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 в кавычки, и когда это не сработало, я сделал то же самое с фактическим паролем, хранящимся в файле конфигурации, но опять же я не имел успеха.

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

  • Как найти общее имя для конкретного глифа?
  • Как создать каталог с '/' в unix?
  • В чем практическая разница между `command` и $ (command)?
  • Что означает dd в ls -l | grep ^ d?
  • Переименовать папку с нечетными символами
  • Каковы специальные символы для печати из сценария для перемещения курсора?
  • Нельзя использовать восклицательный знак (!) В bash?
  • Обрежьте определенное поле и замените его в сценарии оболочки Unix
  • 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 - лучшая ОС в мире.