【问题标题】:Unable to use environment variables in TCL (Linux/Unix)无法在 TCL (Linux/Unix) 中使用环境变量
【发布时间】:2013-03-12 20:29:47
【问题描述】:

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

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

set_vars.sh 中包含以下代码:

export TEST_ENV_VAR=Test

以下作品:

% 放 $env(TEST_ENV_VAR)

测试

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

% puts "$env(TEST_ENV_VAR) 在 TEST_ENV_VAR"

在 TEST_ENV_VAR 中

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

感谢您的宝贵时间。

【问题讨论】:

  • 似乎第二次,您没有运行 set_vars.sh 脚本。我试过你的例子,它们工作得很好。

标签: shell tcl


【解决方案1】:

一定有你没有向我们展示的东西:

$ 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

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    相关资源
    最近更新 更多