读取TCL中的Bash环境变量

读取TCL中的Bash环境变量,tcl,Tcl,如何在Tcl脚本中读取shell环境变量。 所以任何人都请帮助我。我是TCL的新手。使用$::env访问任何环境变量,例如访问TMP环境变量,请执行以下操作: set tmpdir $::env(TMP) 此处的更多信息可通过内置全局变量env访问环境变量(完全限定为:env)。您可以像使用任何其他Tcl阵列一样使用它 如果要打印所有环境变量的列表,可以使用以下方法: proc dump_env_vars {} { foreach name [array names ::env] {

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

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

set tmpdir $::env(TMP)

此处的更多信息可通过内置全局变量env访问环境变量(完全限定为:env)。您可以像使用任何其他Tcl阵列一样使用它

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

proc dump_env_vars {} {
    foreach name [array names ::env] {
        puts "$name == $::env($name)"
    }
}
global env
set olddisplay $env(DISPLAY)
set env(DISPLAY) unix:0
当然,要仅访问单个变量,您可以像使用任何其他数组一样使用它,例如:

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

有关更多信息,请参阅和。要读取Tcl脚本中的shell环境变量,请尝试执行以下操作:

proc dump_env_vars {} {
    foreach name [array names ::env] {
        puts "$name == $::env($name)"
    }
}
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"
}

这是。

我只需编写代码并执行即可。但我不明白。我在tclsh提示符下。我的提示是%。因此,我所做的只是在提示符%set tmpdir$::env(TMP)中键入。输出类似于无法读取“::env(TMP)”:没有这样的变量实际上我想编写一个返回Bash环境变量值的proc is tcl。这是因为没有名为TMP的环境变量。你看过我给你的链接了吗?啊,我能看到你和另一个回复者的对话-我想你会没事的!TMP环境变量在bash脚本中定义。所以我要做的就是访问tcl中的环境变量。我的tcl提示符是%。最后,我想访问tcl中的环境变量。TMP环境变量是$env(TMP)。但是:tcl脚本是从bash脚本调用的吗?变量是否为全局变量(即导出)?是。它工作得很好。但我的问题是,在bash或shell脚本中定义了什么样的环境变量,我只想使用tcl中的proc来访问它。所以请……是的。TMP变量是在bash脚本中定义的环境变量。TMP=/TMP ORACLE_SID=DBTEST ORACLE_HOME=/opt/ORACLE/product/102导出ORACLE_SID ORACLE_HOME所以这里我想访问环境变量ORACLE_SID和ORACLE_HOME,所以我应该怎么做,请……。那么您想要一个所有已定义shell变量的列表吗?是的,您的过程已经执行,它给出了所有环境变量。没关系。但我想问的是。假设在bash脚本中,如果我像这样定义用户定义环境:ORACLE_SID=DBTEST ORACLE_HOME=/opt/ORACLE/product/102 export ORACLE_SID ORACLE_HOME现在我想在tcl中写一个proc来访问用户定义的环境变量。那我该怎么做呢。请…………我也读了你的链接。但是它不符合我的要求。当我想转储环境变量时,我只使用
parray env
。这里实际上parray用于打印env值。但是我想要的是如何访问TCL中的环境变量,它是在bash脚本中定义的,所以请帮助我。。。。。。