查找是否存在 bash 的 PostgreSQL 数据库

Find if a PostgreSQL database exists with bash

我有一个 bash 函数,用于检查 PostgreSQL 数据库是否已经存在。

我捕获了输出。如果数据库存在 PostgreSQL returns 数据库名称作为响应。

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

is_database test

我收到以下错误:

column "test" does not exist

我不是在搜索 table,而是在搜索数据库。

对字符串文字使用单引号:

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

您的代码不适用于 has spaceshas'quotes.

等数据库名称