如何避免错误:没有这样的环境变量?

时间:2011-10-10 12:10:53

标签: tcl

在我的代码中我使用的是环境变量,但如果它(env.var)不存在,我会收到错误消息NAME_ENV_VAR:没有这样的变量,我的脚本就会停止执行。 例如,在行

 myeval $env($File)

我收到错误:

 can't read "env(NIKE_TECH_DIR)": no such variable
    while executing
"myeval $env($File)"
    (procedure "chooseRelevantFiles" line 39)
    invoked from within
"chooseRelevantFiles $::GlobalVars::reqStage"
(file "/vobs/tavor/src/Scripts/ReproduceBug.tcl" line 575)

如何避免此错误并继续执行我的脚本?

3 个答案:

答案 0 :(得分:17)

您可以使用info exists进行测试,如果未设置环境变量,则使用默认值,例如。

if {[info exists env($File)]} {
    set filename $env($File)
} else {
    set filename /some/default/path
}
myeval $filename

答案 1 :(得分:6)

catch错误然后你可以用它做一些事情(例如记录以供日后使用,或使用后备值)并继续你的脚本

e.g。

if {[catch {myeval $env($File)} result]} {
    lappend log $result  
}
#other stuff

答案 2 :(得分:4)

要检查全局env数组之类的数组元素,请不要使用[info exists $env(VAR)]。 相反,你应该使用:

if { [ array names env VAR ] != "" } {
     puts "\nVAR exists and its value is $env(VAR)\n"
}