Страницы

Поиск по вопросам

понедельник, 24 февраля 2020 г.

Как сделать три уровня кавычек в bash?

#linux #postgresql #bash


Добрый день, коллеги!
Как отредактировать следующую строку для её корректного исполнения?

$ su postgres -c 'psql -c "alter role postgres with password 'postgres';"'


Проблема, собственно, в средних кавычках (password 'postgres')
Скрипт выполняется от имени root. 

p.s. есть обходной вариант - пометить строку psql -c "alter role postgres with password
'postgres';" в ещё один sh-скрипт, и уже его выполнять через su user -c, но я не считаю
это правильным.
    


Ответы

Ответ 1



Попробуйте так: # su postgres -c 'psql -c "alter role postgres with password '"'"'postgres'"'"';"'

Ответ 2



Экранирование же ж в помощь: su postgres -c "psql -c \"alter role postgres with password 'postgres';\""

Ответ 3



Один из -c можно исключить следующим образом: $ sudo -u postgres -- psql -c "alter role postgres with password 'postgres';"

Ответ 4



В одинарных кавычках все символы. Используйте двойные кавычки в них можно экранировать одинарные и двойные. su postgres -c "psql -c \"alter role postgres with password \'postgres\' ;\""

Ответ 5



для больших простыней я бы рекомендовал Встроенные документы << EOF

Комментариев нет:

Отправить комментарий