无法在TCL(Linux / Unix)中使用环境变量

时间:2013-03-12 20:29:47

标签: shell tcl

我在尝试在TCL中使用环境变量时遇到了困难。

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

set_vars.sh 中包含以下代码:

export TEST_ENV_VAR=Test

以及以下作品:

  

%汇总$ env(TEST_ENV_VAR)

     

测试

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

  

%put“$ env(TEST_ENV_VAR)在TEST_ENV_VAR”

     

位于TEST_ENV_VAR

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

感谢您的时间。

1 个答案:

答案 0 :(得分: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