在TCL中读取Bash环境变量

时间:2011-04-01 08:44:50

标签: tcl

如何在Tcl脚本中读取shell环境变量。 所以任何人都请帮助我。我是TCL的新人。

4 个答案:

答案 0 :(得分:31)

使用$::env访问任何环境变量,例如要访问TMP环境变量,请执行以下操作:

set tmpdir $::env(TMP)

此处有更多信息http://wiki.tcl.tk/1624

答案 1 :(得分:5)

$ export var=42
$ tclsh
% puts $env(var)
42

答案 2 :(得分:3)

可以通过内置全局变量env访问环境变量(完全限定为::env)。你像任何其他Tcl数组一样使用它。

如果要打印所有环境变量的列表,可以使用以下内容:

proc dump_env_vars {} {
    foreach name [array names ::env] {
        puts "$name == $::env($name)"
    }
}

当然,要访问单个变量,您可以像使用任何其他数组一样使用它,例如:

puts "HOME = '$::env(HOME)'"

有关详细信息,请参阅env page on the Tcler's wikithe env section of the tclvars man page

答案 3 :(得分:2)

要在Tcl脚本中读取shell环境变量,请尝试执行以下操作:

global env
set olddisplay $env(DISPLAY)
set env(DISPLAY) unix:0

这可以用这种方式表达:

set olddisplay $::env(DISPLAY)
set ::env(DISPLAY) unix:0

忘了global

您可以通过执行以下操作来检查变量是否存在:

if {[info exists env(VARNAME)]} {
    # okay, it's there, use it
    set value $env(VARNAME)
} else {
    # the environment var isn't set, use a default
    set value "the default value"
}

这是source