【发布时间】:2013-02-16 12:07:50
【问题描述】:
我是 perl 的新手,我正在尝试从 Perl 脚本执行操作系统命令。
操作系统命令用IPC::Open3执行,命令类似
$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";
这个命令应该把“add”后面的字符串插入到数据库中。
问题是它在数据库中插入的记录没有%TEXT%周围的单引号,像这样:
condition LIKE %TEXT%
如果我在命令提示符下执行命令,它会正确插入字符串。
我应该如何格式化双引号和单引号,以便正确插入数据库?
感谢您的帮助
【问题讨论】:
-
顺便说一句,如果我在提示符下执行命令,它会正确插入字符串
-
您可以通过打印
$cmd来判断,$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";将字符串mycommand --add "condition LIKE '%TEXT%' "存储在$cmd中,这会将参数--add和condition LIKE '%TEXT%'传递给Unix 上的命令系统。这就是你想通过的吗? -
你输入的命令行是什么样子的?
-
运行正常的命令行是这样的:#mycommand --add "condition LIKE '%TEXT%'"
-
我猜你的源字符串中的
\\'将被 perl 视为\'并传递给你的 shell,它会将其插入为'作为参数传递给你的程序。
标签: perl postgresql quotes double-quotes