Найти, существует ли база данных PostgreSQL с помощью bash - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть функция bash, где я проверяю, существует ли база данных PostgreSQL.

Я фиксирую вывод.Если база данных существует, PostgreSQL возвращает имя базы данных в качестве ответа.

function is_database() {
    local database=$1
    local output=$(sudo -u postgres psql -c "SELECT datname FROM pg_catalog.pg_database WHERE datname=\"$database\";")
    if [[ $output = *"${1}"* ]]
    then
        return 0
    else
        return 1
    fi
}

is_database test

Я получаю следующую ошибку:

column "test" does not exist

Я не ищу таблицу, а базу данных.

1 Ответ

0 голосов
/ 25 сентября 2018

Используйте одинарные кавычки для строковых литералов:

sudo -u postgres psql \
    -c "SELECT datname FROM pg_catalog.pg_database WHERE datname='$database'"

Ваш код не будет работать для имен баз данных, таких как has spaces или has'quotes.

...