能够在命令行中创建 postgres 数据库,但不能在 bash 脚本中创建

Able to create postgres database in command line but not in bash script

我正在尝试编写一个 bash 脚本来自动创建和填充数据库。

我发现我可以使用这些命令在命令行中创建数据库:

sudo su postgres
psql -c 'CREATE DATABASE routing;'
exit

之后我看到了数据库。但是,当我将它们放入 shell 脚本中并 运行 它(使用 sudo)时,不会创建数据库。有什么想法吗?

在您 sudo su 之后,您将成为另一个用户。此时脚本会停止执行,直到你退出用户,然后它会继续执行。

相反,如果你想 运行 像 postgres 那样的东西,试试这样:

sudo su postgres <<EOF
psql -c 'CREATE DATABASE routing;'
EOF
exit