如何使用撇号('内部'然后内部')

时间:2011-03-29 00:46:33

标签: php scripting apostrophe

我需要在php中通过sudo发出这个命令。但是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;
                                            ^

我会说错误发生是因为unicode被'包围。 sudo命令也包含在'too。

更新

转义unicode \'unicode\'不起作用。我得到>,它永远挂在那里......

UPDATE2

最终的PHP代码就像

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

感谢@Matthew Scharley

1 个答案:

答案 0 :(得分:1)

这有点奇怪,但是你的双撇号发生了什么,它正在关闭字符串,然后再次重新打开它,这会让你无所不知。解决方案如下:

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

即。将撇号放在关闭和打开之间的双引号中。这将至少在bash类型的shell中起作用,但我不会使用其他人知道它们是如何工作的。