'if' 分支中的 Tcl 错误
Tcl error in 'if' branching
我遇到一个错误:
invalid command name "tcl::mathfunc::expr"
同时尝试以下 if 代码分支。 $env(EXB_DESIGN_NAME) 的值设置为 "seville2"。我希望代码不应该分支到 'if' 条件。
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
这就是您应该如何编写它(对于变量,此处的引号也是可选的):
if {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"} {
#Do something
}
如果你绝对想使用 expr
(这里不是很必要,因为 if
使用 expr
),它会是这样的:
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville"}] || [expr {"$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
或
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
但我不建议编写这样的代码,因为 if
因为用我提到的第一种方式编写代码要简单得多。
如果你有很多字符串要检查,你可以使用 ni
(对于 'not in'):
set mylist {"seville" "seville2"}
if {$env(EXB_DESIGN_NAME) ni $mylist} {
#Do something
}
Tcl 将表达式中的函数转换为对 tcl::mathfunc
命名空间中等效命令的调用。
但是,您真正的问题是您在已经是表达式的上下文中使用 expr
作为函数!你不需要那种复杂性。这意味着我们可以改变:
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
进入:
if {$env(EXB_DESIGN_NAME) ne "seville" || $env(EXB_DESIGN_NAME) ne "seville2"} { -------}
它更短了。更清楚了。没错…
我遇到一个错误:
invalid command name "tcl::mathfunc::expr"
同时尝试以下 if 代码分支。 $env(EXB_DESIGN_NAME) 的值设置为 "seville2"。我希望代码不应该分支到 'if' 条件。
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
这就是您应该如何编写它(对于变量,此处的引号也是可选的):
if {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"} {
#Do something
}
如果你绝对想使用 expr
(这里不是很必要,因为 if
使用 expr
),它会是这样的:
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville"}] || [expr {"$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
或
if {[expr {"$env(EXB_DESIGN_NAME)" ne "seville" || "$env(EXB_DESIGN_NAME)" ne "seville2"}]} {
#Do something
}
但我不建议编写这样的代码,因为 if
因为用我提到的第一种方式编写代码要简单得多。
如果你有很多字符串要检查,你可以使用 ni
(对于 'not in'):
set mylist {"seville" "seville2"}
if {$env(EXB_DESIGN_NAME) ni $mylist} {
#Do something
}
Tcl 将表达式中的函数转换为对 tcl::mathfunc
命名空间中等效命令的调用。
但是,您真正的问题是您在已经是表达式的上下文中使用 expr
作为函数!你不需要那种复杂性。这意味着我们可以改变:
if {expr("$env(EXB_DESIGN_NAME)" ne "seville") || expr("$env(EXB_DESIGN_NAME)" ne "seville2")} { -------}
进入:
if {$env(EXB_DESIGN_NAME) ne "seville" || $env(EXB_DESIGN_NAME) ne "seville2"} { -------}
它更短了。更清楚了。没错…