Как выйти из кавычки в команде Postgresql?

Я работаю над сценарием, который создает пользователя Пост-ГРЭС с вводом переменной от исходного файла. Как пользователь 'базируются', я запускаю следующий скрипт:

su - postgres <<'EOF'
. /var.src
psql
CREATE ROLE john;
ALTER USER john WITH PASSWORD '$JOHNPASSWORD';
ALTER ROLE john WITH LOGIN;
CREATE DATABASE john;
ALTER DATABASE john OWNER TO john;
\q
EOF

Я создаю пользователя john и базу данных john, однако пароль john находится в var.src. Везде я смотрю, я получаю команды, подобные этому:

sudo -u postgres psql -c "ALTER USER john WITH PASSWORD '$JOHNPASSWORD';"

Замена пароля с $JOHNPASSWORD требует Escape, который я принимаю. Я попытался выйти из одинарной кавычки с обратной косой чертой, двойными кавычками, и т.д. Ничто. Я не смог найти, как я могу выйти из одинарной кавычки так, чтобы она могла считать переменную из var.src.

Возможно, это имеет некоторое отношение, как я приближаюсь к этому полностью?

1
задан 21 August 2016 в 18:53

1 ответ

Я нашел что-то, что помогло. Я предоставил пароль, изменяют команду после того, как сценарий убежал из EOF. Таким образом, вот то, что работало на меня:

    su - postgres <<'EOF'
    . /var.src
    psql
    CREATE ROLE john;
    ALTER ROLE john WITH LOGIN;
    CREATE DATABASE john;
    ALTER DATABASE john OWNER TO john;
    \q
    EOF

    . /var.src
    sudo -u postgres psql -c "ALTER USER john WITH PASSWORD '$JOHNPASSWORD';"

Это вызвано тем, что я назвал переменный файл снова после EOF. Я уверен, что это имеет отношение к моему предыдущему предположению о выходе из кавычки. Но это работает также.

0
ответ дан 8 December 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: