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

标签 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

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

最佳答案

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

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

您的代码不适用于数据库名称,例如 has spaceshas'quotes

关于bash - 使用 bash 查找 PostgreSQL 数据库是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52494680/

相关文章:

sql - 如何通过最大值知道其他列的值(PostgreSQL)?

postgresql - 递归 CTE 将字段与父级从任意点连接起来

Bash 脚本目录检测和创建

linux - 如何在包含大量命令的 bash 脚本中执行 ssh?

postgresql - 带有 PG 的 Rails4 FIND_IN_SET 不工作

php - 已安装 Postgres.app pdo_pgsql pgsql 但 php 找不到模块。苹果操作系统

json - 如何使用 jq 将多个字段连接到同一行

bash - 如何获取指定时间范围内的文件列表

ruby-on-rails - 将我的应用程序部署到 Heroku 时出现 500 错误

sql - 在 Postgres 中解释解释分析的结果