Как использовать апостроф ("внутри", а затем внутри ")

Мне нужно выполнить эту команду через sudo в php. Но у sudo должна быть команда внутри апострофов.

psql -c "create database radek with encoding 'unicode';" -U edumate template1

так

sudo -su postgres 'psql -c "create database radek with encoding ''unicode'';" -U edumate template1'

дает мне ошибку

ERROR:  syntax error at or near "unicode"
LINE 1: create database radek with encoding unicode;
                                            ^

Я бы сказал, что ошибка происходит потому, что Юникод заключен в '. И команда sudo тоже заключена в '.

ОБНОВИТЬ

выход из юникода \'unicode\' не работает я получил > и он там висит навсегда....

UPDATE2

окончательный код PHP как

exec("sudo -su postgres 'psql -c \"create database " . $db . " with encoding '\"'\"'unicode'\"'\"';\" -U edumate template1'", $output); 

благодаря @Matthew Scharley

1 ответ

Решение

Это немного странно, но то, что происходит с вашим двойным апострофом, заключается в том, что он закрывает строку, а затем снова открывает ее, что дает вам чистую сеть. Решение заключается в следующем:

sudo -su postgres 'psql -c "create database radek with encoding '"'"'unicode'"'"';" -U edumate template1'

то есть. Поместите апостроф в двойные кавычки между закрытием и открытием. Это будет работать как минимум bash типа снарядов, но я не использую других, чтобы знать, как они работают.

Другие вопросы по тегам