Выход из переменной пароля со специальными символами для mysqldump - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь создать сценарий оболочки для автоматического резервного копирования всей моей базы данных. Мой скрипт ожидает пароль в новой строке, потому что я не хочу его нигде хранить. Вот мой код:

#!/bin/bash
echo -n Password:
read -s PASS
echo
docker exec db /usr/bin/mysqldump --all-databases -u admin --password='\''$PASS\'' > backup-$(date "+%Y-%m-%d").sql

Проблема в том, что мне нужно поместить переменную в одинарные кавычки из-за знаков $ в пароле, но я не могу читать переменные в одинарных кавычках. Я знаю, что есть несколько подобных вопросов, но я не могу их решить.

Таким образом, если пароль «$ ecretPa $$ word», то фактически выполняемая программа должна выглядеть примерно так:

docker exec db /usr/bin/mysqldump --all-databases -u admin --password='$ecretPa$$word' > backup-2020-03-03.sql

1 Ответ

0 голосов
/ 21 марта 2020

Мне удалось сделать эту работу. Возможно, проблема была не в побеге, а в том, как я пытался это сделать. Мой окончательный код:

#!/bin/bash
echo -n Password:
read -s PASS
echo
cmd="docker exec db /usr/bin/mysqldump --all-databases -u admin --password='$PASS' > backup-$(date "+%Y-%m-%d").sql"
eval "$cmd";
...