'.png)
Я создал скрипт оболочки, который использует информацию, хранящуюся в файле конфигурации. Проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь передать определенные значения, хранящиеся в файле конфигурации, для использования скриптом оболочки, я получаю синтаксическую ошибку.
Например:
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
и вы должны быть в безопасности.