代码之家  ›  专栏  ›  技术社区  ›  user3541631

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

  •  1
  • user3541631  · 技术社区  · 6 年前

    我有一个bash函数,用于检查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 回复  |  直到 6 年前
        1
  •  3
  •   Laurenz Albe    6 年前

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

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

    你的代码不能用于像这样的数据库名称 has spaces has'quotes