Проблема с цитированием в скрипте оболочки psql

#postgresql #shell #scripting #quoting

Вопрос:

Я пытаюсь использовать следующее в скрипте оболочки (/bin/sh), но продолжаю получать ошибки:

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

Кажется, что-то с цитированием не так, но я не могу найти, в чем дело. Я должен передать переменную $password и команду как пользователь postgres. Кто-нибудь может мне помочь?

Заранее спасибо

Ответ №1:

Ваши цитаты даже не совпадают. Вы можете избежать двойных кавычек внутри двойных кавычек, и нет необходимости избегать одинарных кавычек.

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

Обратите внимание, что user это недопустимое имя в SQL.