使用bash查找PostgreSQL数据库是否存在

时间:2018-09-25 09:20:40

标签: bash postgresql postgresql-10

我有一个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 :(得分:2)

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

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

您的代码无法用于has spaceshas'quotes之类的数据库名称。