检查数据库是否存在的 Bash 脚本

用户名

我正在尝试创建一个bash脚本来检查数据库(PostgreSQL)是否存在:

function is_database()
 return $(sudo -u postgres psql -c "SELECT exists(SELECT datname FROM pg_catalog.pg_database where datname='\${1}')")

echo database:
read
is_database $REPLY

我总是得到(如果数据库存在与否):

exists ------ f (1 row)

问题似乎是'\${1}'转义不起作用,而且我已经有了外部"".

另一件事是检查结果,可以ft

罗尔夫

我认为return只接受数字结果。当我将其更改为时,echo我得到与您相同的输出。

Using'\${1}'会将字符串${1}传递给 postgres,使用'${1}'or '$1'(并希望用户不要输入一些额外的 SQL 来注入...)

也许不需要的另一种方法sudo是列出数据库并grep结果:

function is_database() {
  psql -lqt | cut -d \| -f 1 | grep -wq $1
}

echo database:
read
if is_database $REPLY
then
  echo $REPLY exists
else
  echo $REPLY does not exist
fi

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章