expr 命令语法:字符串表达式必须括起来?
expr command syntax: string expression must be enclosed?
当我编写以下脚本时:
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,这里没有说有语法要求。
再次查看手册页,在 "Operands" 下。字符串操作数必须用双引号或大括号括起来。那些引号或大括号本身必须在调用中被引用,否则 Tcl 解释器将在将参数传递给命令之前将它们去掉。
如果您的调用是
expr "a" ne "ab"
该命令将获取参数列表
a ne ab
无法处理。
您可以这样引用引语:
expr \"a\" ne \"ab\"
但是你最好把所有的东西都放在一个论点中。这将看起来更整洁,保留您的报价,并避免其他一些严重的问题。
当我编写以下脚本时:
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,这里没有说有语法要求。
再次查看手册页,在 "Operands" 下。字符串操作数必须用双引号或大括号括起来。那些引号或大括号本身必须在调用中被引用,否则 Tcl 解释器将在将参数传递给命令之前将它们去掉。
如果您的调用是
expr "a" ne "ab"
该命令将获取参数列表
a ne ab
无法处理。
您可以这样引用引语:
expr \"a\" ne \"ab\"
但是你最好把所有的东西都放在一个论点中。这将看起来更整洁,保留您的报价,并避免其他一些严重的问题。