Как программно проверить, существует ли база данных и / или пользователь в базе данных PostgreSQL с помощью Bash?

Я хочу написать bash-скрипт, который создает несколько пользователей и базы данных.

  1. сначала я хочу проверить, существует ли пользователь, поэтому я попытался

    sudo -u postgres psql -c 'SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}'
    

    как получить возвращаемое значение, которое я могу проверить в if?

  2. Как проверить, существует ли база данных?

  3. если postgres psql есть ошибка, как остановить скрипт и повторить ошибку?

  4. Я пытаюсь создать новый переменная таким образом A='${b}_dml' но я получаю ошибку.

12
задан JakeGould
13.11.2022 19:36 Количество просмотров материала 3071
Распечатать страницу

1 ответ

может быть, попробуйте что-то вроде следующего в сценарии bash:

#!/bin/bash
set -e

read -p "Please enter the user name to search for: " VAR_USER

VALUE=$(psql -c "SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}")
echo "$VALUE"

"set-e" приводит к выходу скрипта при ошибке. См.этой ответ и соответствующие записи для получения дополнительной информации. Он также (в моем тестировании с mysql, поскольку у меня не установлен postgres) отобразит ошибку, которая вызвала выход скрипта.

Если используется что-то, отличное от базы данных по умолчанию, не забудьте указать это имя базы данных где-нибудь/как-то в скрипте.

1
отвечен jrogers63 2022-11-15 03:24

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх