TCL中的转义单引号和双引号

TCL中的转义单引号和双引号,tcl,Tcl,我正在使用以下脚本,但它会抛出错误消息 tcl 它将错误显示为:预期的单词get'和' 我尝试了部件的,但仍然不起作用。如果它同时具有单引号和双引号,如何避开它们 单报价与Tcl 在Tcl本身中,单引号字符(“)没有任何特殊意义。它只是一个普通字符,如逗号(,)或句点()。(好吧,除了逗号在表达式中有特殊含义外,句点在浮点值和Tk小部件名称中使用。相比之下,单引号没有任何意义。) 对于您所写的内容,任何特殊含义(以及因此而需要引用的内容)仅限于add命令 在Tcl中,复杂的报价情况通常通过使用不

我正在使用以下脚本,但它会抛出错误消息
tcl

它将错误显示为:
预期的单词get'和'

我尝试了
部件的
,但仍然不起作用。如果它同时具有单引号和双引号,如何避开它们

单报价与Tcl 在Tcl本身中,单引号字符(
)没有任何特殊意义。它只是一个普通字符,如逗号(
)或句点(
)。(好吧,除了逗号在表达式中有特殊含义外,句点在浮点值和Tk小部件名称中使用。相比之下,单引号没有任何意义。) 对于您所写的内容,任何特殊含义(以及因此而需要引用的内容)仅限于
add
命令

在Tcl中,复杂的报价情况通常通过使用不同的报价策略来解决。特别是,将内容放在大括号中会禁用所有替换(反斜杠换行空格折叠除外)。这让我可以写出与您所写内容相同的内容:

add command "Audit Param" \
      setting {Error : Part's and Spec's desc contains "OBS" or "REPLACE"} \
      "(Reference No)" user all
这里的任何投诉都来自代码内部,而不是代码本身。(eval{…}
没有添加任何内容。除了使代码更难阅读之外,它不会招致任何惩罚。)

真正的问题 根据一个非常粗略的猜测,问题字符串正在SQL语句中使用,直接替换字符串而不是准备好的参数;这可能会产生这种错误信息。在发生故障后,检查全局
errorInfo
变量的内容,以获得堆栈跟踪,帮助确定出错原因;这可能会帮助您了解代码的内部缺陷。如果它是一个顽皮的SQL,那么需要修复代码,因为您有一些东西容易受到SQL注入问题的影响(这可能是安全问题,也可能不是,取决于该命令的公开程度)。如果是这样的话,将每个单引号加倍(将
'
更改为
'
)应该可以在短期内解决问题。

单引号和Tcl 在Tcl本身中,单引号字符(
)没有任何特殊意义。它只是一个普通字符,如逗号(
)或句点(
)。(好吧,除了逗号在表达式中有特殊含义外,句点在浮点值和Tk小部件名称中使用。相比之下,单引号没有任何意义。) 对于您所写的内容,任何特殊含义(以及因此而需要引用的内容)仅限于
add
命令

在Tcl中,复杂的报价情况通常通过使用不同的报价策略来解决。特别是,将内容放在大括号中会禁用所有替换(反斜杠换行空格折叠除外)。这让我可以写出与您所写内容相同的内容:

add command "Audit Param" \
      setting {Error : Part's and Spec's desc contains "OBS" or "REPLACE"} \
      "(Reference No)" user all
这里的任何投诉都来自代码内部,而不是代码本身。(eval{…}
没有添加任何内容。除了使代码更难阅读之外,它不会招致任何惩罚。)

真正的问题 根据一个非常粗略的猜测,问题字符串正在SQL语句中使用,直接替换字符串而不是准备好的参数;这可能会产生这种错误信息。在发生故障后,检查全局
errorInfo
变量的内容,以获得堆栈跟踪,帮助确定出错原因;这可能会帮助您了解代码的内部缺陷。如果它是一个顽皮的SQL,那么需要修复代码,因为您有一些东西容易受到SQL注入问题的影响(这可能是安全问题,也可能不是,取决于该命令的公开程度)。如果是这样的话,从短期来看,将每个报价加倍(将
'
更改为
'
)应该可以解决这个问题