как экранировать специальные символы пароля mariadb в сценарии оболочки - PullRequest
0 голосов
/ 21 января 2019

И что написать скрипт оболочки для входа в mariadb. Сценарий оболочки считывает один пароль, содержащий специальные символы (пустые,! @) В INI-файле.

ОС - Ubuntu 18.04

INI-файл следующим образом:

user=xxx-xxx-xxx
password=xxx /xxx /xx/ !\@

скрипт оболочки следующим образом:

#!/bin/bash
baseDir="$(cd "$(dirname "$0")" && pwd)"
iniPath="$baseDir/backup.ini"
echo "iniPath is $iniPath"

dbUser="$(grep 'user' $iniPath | cut -d '=' -f 2)"
echo "user is $dbUser"

dbPassword="$(grep 'password' $iniPath | cut -d '=' -f 2)"
echo "password is $dbPassword"

mysql -h localhost -u $dbUser -p'$dbPassword' 

если я введу команду следующим образом: mysql -h localhost -u xxxxxx -p'xxx / xxx / xx /! @ ' в командной строке, он успешно регистрируется. Но если я выполню сценарий оболочки, это всегда приведет к отказу в доступе для пользователя.

Есть предложения? спасибо.

1 Ответ

0 голосов
/ 26 февраля 2019

Вы пытались использовать: mysql -h localhost -u $ dbUser -p 'echo $dbPassword'? (специальный символ `на США похож на клавиатуру под левой клавишей esc, выглядит как апостроф) Похоже, переменная с паролем неправильно" печатается "в команде mysql перед ее запуском. Другой способ, который я бы порекомендовал попробовать, это использовать -p "$ dbPassword"

...