我是 Perl 新手,我正在尝试从 Perl 脚本执行操作系统命令。
操作系统命令的执行方式为 IPC::Open3
,命令就像
$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";
该命令应该将“add”后面包含的字符串插入数据库。
问题在于它在数据库中插入记录时,%TEXT%
周围没有单引号,如下所示:
condition LIKE %TEXT%
如果我在命令提示符下执行该命令,它会正确插入字符串。
我应该如何格式化双引号和单引号,以便将其正确插入数据库中?
感谢您的帮助
最佳答案
通过将命令放入单个字符串中,您将使其通过系统的 shell。 (你没有提到它是 cmd.exe 还是 bash 或者其他有趣的东西。)
建议:
将系统命令创建为字符串数组将避免 shell 重新插入您的命令行。
@cmd = ('mycommand', '--add', q(condition LIKE '%TEXT%'));
添加额外的反斜杠以保护 shell 中的单引号。在命令前添加
echo
可以帮助调试......(我个人最喜欢的)不要为数据库访问付费。
use DBI
.
关于perl - perl中的单引号和双引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15167071/