在我的python脚本中,我有以下几行-
oscmd = "sqlite3 $OMC_DB_DIR/.mcdata \"UPDATE IPADDRESS SET DESCRIPTION = 'NODE0' WHERE HOST LIKE '%-n1.%'\" >/dev/null" .
我使用子流程.popen. 每当命令失败时,我想在控制台上显示失败的命令。你知道吗
所以我做了oscmd_display= "echo \"" + oscmd + "\""
。
我不仅使用print,还使用echo,因为我希望对$OMC\u DB\u DIR这样的环境变量进行解释并显示它们的实际值。你知道吗
但是,当我运行命令失败时,会收到如下消息-
[ERROR ] Executing the following command failed :
sqlite3 /opt/store/.mcdata UPDATE IPADDRESS SET DESCRIPTION=NODE0 WHERE HOST LIKE %-n1.% >/dev/null
也就是说,所有的引用都被剥离了。你知道吗
我要保留命令中的“”和“”引号。你知道吗
有人能提出一个解决办法吗?你知道吗
引用有几个层次。你知道吗
在纯SQL中,字符串必须使用单引号:
在shell中,引号用于禁用特殊的shell字符,因此必须对它们进行转义,以在被调用的程序中结束:
在Python中,必须对反斜杠和引号进行转义,以便将它们赋给shell:
(如何把
'
和"
混合在一起就剩下练习了……)将包含命令名和参数的列表传递给
subprocess.Popen
,而不是将整个命令行嵌入一个字符串中。你知道吗(如果您使用的是早于python2.7的版本,请将
os.devnull
替换为open('/dev/null', 'w')
。)尝试对最外层的引号使用三重引号:
相关问题 更多 >
编程相关推荐