如何使用 Bash 以编程方式检查 PostgreSQL 数据库中是否存在数据库和/或用户?

如何使用 Bash 以编程方式检查 PostgreSQL 数据库中是否存在数据库和/或用户?

我想编写一个创建多个用户和一个数据库的 bash 脚本。

  1. 首先我想检查用户是否存在,所以我尝试

    sudo -u postgres psql -c 'SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}'
    

    我如何获取可在 a 中检查的返回值if

  2. 我如何检查数据库是否存在?

  3. 如果 postgrespsql出现错误,我该如何停止脚本并回显错误?

  4. 我尝试以这种方式创建一个新变量A='${b}_dml',但出现错误。

答案1

也许可以在 Bash 脚本中尝试如下操作:

#!/bin/bash
set -e

read -p "Please enter the user name to search for: " VAR_USER

VALUE=$(psql -c "SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}")
echo "$VALUE"

“set -e” 会导致脚本在出错时退出。请参见答案和相关条目以获取更多信息。它还将(在我使用 mysql 进行的测试中,因为我没有安装 postgres)显示导致脚本退出的错误。

如果使用默认数据库以外的其他数据库,请确保在脚本中的某处/以某种方式指定该数据库名称。

相关内容