shell 脚本 psql 中的引用问题

Problem with quoting in shell script psql

我尝试在 shell (/bin/sh) 脚本中使用以下内容,但我不断收到错误消息:

su postgres -c "/usr/bin/psql -c \'CREATE ROLE user WITH SUPERUSER LOGIN PASSWORD \'$password;"

似乎引号有问题,但我找不到是什么。我应该以 postgres 用户身份传递变量 $password 和命令。有人可以帮助我吗?

提前致谢

你的报价甚至都不匹配。双引号内可以转义双引号,单引号就不用转义了。

su postgres -c "/usr/bin/psql -c \"CREATE ROLE username WITH SUPERUSER LOGIN PASSWORD '$password';\""

请注意 user 不是 SQL 中的有效名称。