我是perl的新手,我正在尝试从Perl脚本执行操作系统命令。
使用IPC::Open3
执行操作系统命令,命令类似于
$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";
此命令应该将“add”之后包含的字符串插入数据库。
问题是它在数据库中插入记录而没有%TEXT%
周围的单引号,如下所示:
condition LIKE %TEXT%
如果我在命令提示符下执行命令,它会正确插入字符串。
如何格式化双引号和单引号以便正确插入数据库?
感谢您的帮助
答案 0 :(得分:5)
通过将命令放在一个字符串中,您正在通过系统的shell进行处理。 (你没有提到它是cmd.exe还是bash或其他有趣的东西。)
建议:
将系统命令创建为字符串数组将避免shell重新插入命令行。
@cmd = ('mycommand', '--add', q(condition LIKE '%TEXT%'));
抛出额外的反斜杠以保护shell中的单引号。将echo
添加到您的命令可能有助于调试....
(我个人最喜欢的)不要为数据库访问做好准备。 use DBI
答案 1 :(得分:0)
$cmd = q{mycommand --add "condition LIKE '%TEXT%'"};
qq
用于双引号,q
用于单引号。
这样就可以实现整个命令。