2013-03-12 113 views
1

我在尝试在TCL中使用环境变量时遇到困难。无法在TCL中使用环境变量(Linux/Unix)

所以我有一个shell脚本可以导出一堆环境变量,以便我的TCL脚本可以在以后使用它们。

set_vars.sh中有下面的代码:

export TEST_ENV_VAR=Test

及以下作品:

%把$ ENV(TEST_ENV_VAR)

测试

但是,一旦我将环境变量放在运算符或引号中,则不会返回任何内容。

%看跌期权 “$ ENV(TEST_ENV_VAR)是TEST_ENV_VAR”

是TEST_ENV_VAR

任何人都知道这个问题可能是什么?任何帮助将不胜感激。

谢谢你的时间。

+0

这似乎是第二次,你没有运行你的** set_vars.sh **脚本。我试了你的例子,他们工作得很好。 – 2013-03-12 22:03:00

回答

4

一定有什么事情你不向我们展示:

$ export TEST_ENV_VAR=Test 
$ tclsh 
% puts $env(TEST_ENV_VAR) 
Test 
% puts "$env(TEST_ENV_VAR) is in TEST_ENV_VAR" 
Test is in TEST_ENV_VAR 

注意env全球变量,所以如果你在程序中,利用它,你必须声明为global

$ tclsh 
% proc show_env1 {varname} { 
    puts "does not work: $env($varname)" 
} 
% show_env1 TEST_ENV_VAR 
can't read "env(TEST_ENV_VAR)": no such variable 
% proc show_env2 {varname} { 
    global env 
    puts "works: $env($varname)" 
} 
% show_env2 TEST_ENV_VAR 
works: Test 
% proc show_env3 {varname} { 
    puts "also works: $::env($varname)" 
} 
% show_env3 TEST_ENV_VAR 
also works: Test