如何使用撇号( ' inside " 然后在 ' 内)
我需要在 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 命令也用 ' 括起来。
UPDATE
转义 unicode \'unicode\'
不起作用。我得到 >
并且它永远挂在那里......
UPDATE2
最终的 php 代码就像
exec("sudo -su postgres 'psql -c \"create database " . $db . " with encoding '\"'\"'unicode'\"'\"';\" -U edumate template1'", $output);
感谢 @Matthew Scharley
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这有点奇怪,但是双撇号所发生的情况是,它关闭了字符串,然后再次重新打开它,这让你一无所获。解决方案如下:
即。将撇号放在收盘价和开盘价之间的双引号内。这至少可以在 bash 类型的 shell 中工作,但我不使用其他 shell 来了解它们是如何工作的。
It's a bit weird, but what's happening with your double apostrophe is that it's closing the string then reopening it again, which gains you a net of nothing. The solution is the following:
ie. Put the apostrophe in double quotes between the close and open. This will work in at least
bash
type shells, but I don't use others to know how they work.