我们可以用两种可能的方式来评估这两个表达式:
set a 1
set b 1
puts [expr $a + $b ]
puts [expr {$a + $b } ]
Run Code Online (Sandbox Code Playgroud)
但是为什么第一个讨厌有经验的Tclers,并认为这是不好的做法?第一次使用是否expr有一些安全问题?
1)
% expr "1==1"
1
Run Code Online (Sandbox Code Playgroud)
2)
% expr "i==i"
invalid bareword "i"
in expression "i==i";
should be "$i" or "{i}" or "i(...)" or ...
Run Code Online (Sandbox Code Playgroud)
为什么在步骤2中出现此错误
1) % if {"i" == "i"} {
puts "hai"
}
hai
2) % if {i == "i"} {
puts "hai"
}
invalid bareword "i"
in expression "i == "i"";
should be "$i" or "{i}" or "i(...)" or ...
Run Code Online (Sandbox Code Playgroud)
if {"i"=="i"}这是if条件的wotking.
在这里,我发现像expr命令只评估整数,而不是比较字符串,但In"if"条件的一切(整数和字符串)正在评估.
事情在这里如何运作?
tcl ×2