当我写下面的脚本时:
expr "a" ne "ab"
我收到错误:
invalid bareword "a"
in expression "a ne ab";
should be "$a" or "{a}" or "a(...)" or ...
我需要将其更改为expr {"a" ne "ab"}
。
是的,我知道最好总是括号引用表达式参数,但从语法的角度来看,上面的脚本有什么问题?
我查看了手册页https://www.tcl.tk/man/tcl8.6/TclCmd/expr.htm,但没有说明这里有语法要求。
答案 0 :(得分:3)
在"操作数"下再次查看手册页。字符串操作数必须用双引号或大括号括起来。这些引号或大括号本身必须在调用中引用,否则Tcl解释器会在将参数传递给命令之前将其删除。
如果您的调用是
expr "a" ne "ab"
该命令将获取参数列表
a ne ab
它无法处理。
你可以引用这样的引号:
expr \"a\" ne \"ab\"
但你最好把它全部搞砸到一个论点。这样看起来更整洁,保留你的报价,并避免一些其他严重的问题。