perl中的单引号和双引号
我是perl的新手,我正在尝试从perl脚本执行操作系统命令 使用执行操作系统命令,命令如下perl中的单引号和双引号,perl,postgresql,quotes,double-quotes,Perl,Postgresql,Quotes,Double Quotes,我是perl的新手,我正在尝试从perl脚本执行操作系统命令 使用执行操作系统命令,命令如下 $cmd = "mycommand --add \"condition LIKE '%TEXT%' \""; 此命令用于将“add”之后包含的字符串插入数据库 问题是它在数据库中插入记录时,在%TEXT%周围没有单引号,如下所示: condition LIKE %TEXT% 如果在命令提示符下执行该命令,它将正确插入字符串 我应该如何格式化双引号和单引号,以便将其正确插入数据库 感谢您的帮助通过将命
$cmd = "mycommand --add \"condition LIKE '%TEXT%' \"";
此命令用于将“add”之后包含的字符串插入数据库
问题是它在数据库中插入记录时,在%TEXT%
周围没有单引号,如下所示:
condition LIKE %TEXT%
如果在命令提示符下执行该命令,它将正确插入字符串
我应该如何格式化双引号和单引号,以便将其正确插入数据库
感谢您的帮助通过将命令放在单个字符串中,您正在使其通过系统外壳。(你没有提到它是cmd.exe还是bash或其他有趣的东西。) 建议:
@cmd=('mycommand','--add',q(类似于'%TEXT%'的条件)代码>
echo
预先添加到命令中有助于调试qq
用于双引号,q
用于单引号
通过这种方式,它接受整个命令 顺便说一句,如果我在提示符中执行该命令,它将正确插入字符串,您可以通过打印
$cmd
,$cmd=“mycommand--add\”条件(如“%TEXT%”)来判断
在$cmd
中存储字符串mycommand--add“类似“%TEXT%”的条件”
,这将在unix系统上向命令传递args--add
和类似“%TEXT%”的条件。这就是您要传递的吗?您键入的命令行是什么样子的?正常工作的命令行是这样的:#mycommand--添加“类似于“%TEXT%”的条件”我猜源字符串中的\\'
会被perl视为\'
并传递给shell,shell会将其插入'
作为参数传递给程序。IPC::Open3
不像system()
或qx()
,没有shell解析。1和3是非常好的答案。@jordanm:查看IPC::Open3(v1.12)的第273行。在第4个及以后的参数上调用exec()。(1..3在第201行被移出。)exec()的文档确实表明,一个带有shell字符的字符串会在shell中产生一次旅行。我喜欢这样想:“…”
是qq“…”
的缩写,”
是q'.
的缩写。
$cmd = q{mycommand --add "condition LIKE '%TEXT%'"};