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注入问题的影响(这可能是安全问题,也可能不是,取决于该命令的公开程度)。如果是这样的话,从短期来看,将每个报价加倍(将'
更改为'
)应该可以解决这个问题