【发布时间】:2015-11-11 23:13:02
【问题描述】:
在我的 python 脚本中,我有以下行 -
oscmd = "sqlite3 $OMC_DB_DIR/.mcdata \"UPDATE IPADDRESS SET DESCRIPTION = 'NODE0' WHERE HOST LIKE '%-n1.%'\" >/dev/null" .
我使用 subprocess.popen 运行此命令。 每当命令失败时,我想在控制台上显示失败的命令。
所以我做 oscmd_display= "echo \"" + oscmd + "\"" 。
我不只是使用 print 而是使用 echo 因为我希望像 $OMC_DB_DIR 这样的环境变量被解释并显示它们的实际值。
但是,当我运行并且命令失败时,我会收到类似 -
的消息[ERROR ] Executing the following command failed :
sqlite3 /opt/store/.mcdata UPDATE IPADDRESS SET DESCRIPTION=NODE0 WHERE HOST LIKE %-n1.% >/dev/null
也就是说,所有的引号都去掉了。
我想保留命令中的 "" 和 '' 引号。
有人可以提出解决方案吗?
【问题讨论】:
-
将
set -x;添加到命令的开头,shell 会在运行时显示该行。您不能可靠地将命令粘贴在字符串中并让引用正常工作。您可以将其用于打印,但不值得。
标签: python bash sqlite echo quotes