expr命令语法:必须包含字符串表达式?

时间:2015-02-16 21:58:34

标签: tcl

当我写下面的脚本时:

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,但没有说明这里有语法要求。

1 个答案:

答案 0 :(得分:3)

在"操作数"下再次查看手册页。字符串操作数必须用双引号或大括号括起来。这些引号或大括号本身必须在调用中引用,否则Tcl解释器会在将参数传递给命令之前将其删除。

如果您的调用是

expr "a" ne "ab"

该命令将获取参数列表

a ne ab

它无法处理。

你可以引用这样的引号:

expr \"a\" ne \"ab\"

但你最好把它全部搞砸到一个论点。这样看起来更整洁,保留你的报价,并避免一些其他严重的问题。