Як програмно перевірити наявність бази даних та / або користувача в базі даних PostgreSQL за допомогою Bash?


1

Я хочу написати скрипт 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'але я отримую помилку.

Відповіді:


1

Можливо, спробуйте щось подібне у баш-скрипті:

#!/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, оскільки у мене не встановлені постгреси) відобразить помилку, яка спричинила вихід сценарію.

Якщо ви використовуєте щось інше, ніж база даних за замовчуванням, обов'язково вкажіть це ім'я бази даних десь / якось у сценарії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.