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

527
user3541631

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

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

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

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

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

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

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

1

1 ответ на вопрос

1
jrogers63

Может быть, попробуйте что-то вроде следующего в скрипте 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=$") echo "$VALUE" 

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

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

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