Как я могу избежать ошибки: нет такой переменной среды? - PullRequest
12 голосов
/ 10 октября 2011

В моем коде я использую переменные окружения, но если его (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 ]

17 голосов
/ 10 октября 2011

Вы можете проверить с помощью info exists и использовать значение по умолчанию, если переменная окружения не установлена, например.

if {[info exists env($File)]} {
    set filename $env($File)
} else {
    set filename /some/default/path
}
myeval $filename
6 голосов
/ 10 октября 2011

поймать ошибку, тогда вы можете что-то с ней сделать (например, зарегистрировать это позже или использовать запасное значение) и продолжить работу со своим сценарием

, например

if {[catch {myeval $env($File)} result]} {
    lappend log $result  
}
#other stuff
4 голосов
/ 24 сентября 2012

Для проверки элемента массива, такого как глобальный массив env, не используйте [info exists $env(VAR)].Вместо этого вы должны использовать:

if { [ array names env VAR ] != "" } {
     puts "\nVAR exists and its value is $env(VAR)\n"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...