我刚刚在TCL 8.6中进行了以下实验:
% expr \"\{" ne \"x\"
1
% expr \"\[" ne \"x\"
extra characters after close-quote
in expression ""[" ne "x""
第一个命令对我有意义:
第二个命令中的错误没有意义。唯一的区别是用支架替换支架,为什么会失败?
我知道支持参数是预期的表达式,这个问题主要是为了理解TCL解析。
答案 0 :(得分:2)
第二个命令的问题是expr
命令在双引号内处理[
... ]
个序列作为命令替换。 这与Tcl是否无关,也是为什么始终支持整体表达式的一个好主意的一部分。如果你改为使用:
expr \{\[\} ne \"x\"
然后它会起作用;与基本Tcl语言一样,expr
不会在括号引用的术语中扩展命令替换。