Подтвердить что ты не робот

Прочитать переменную среды Bash в TCL

Как прочитать переменную среды оболочки в вашем Tcl script. Так что, пожалуйста, помогите мне. Я очень новичок в TCL.

4b9b3361

Ответ 1

Используйте $::env для доступа к любым переменным среды, например. для доступа к переменной среды TMP выполните следующее:

set tmpdir $::env(TMP)

Подробнее здесь http://wiki.tcl.tk/1624

Ответ 2

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

Ответ 3

Переменные среды доступны через встроенную глобальную переменную env (она полностью соответствует ::env). Вы используете это, как и любой другой массив Tcl.

Если вы хотите распечатать список всех переменных среды, вы можете использовать что-то вроде этого:

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

Конечно, для доступа к одной переменной вы используете ее как любой другой массив, например:

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

Для получения дополнительной информации см. страницу env на вики Tcler и env раздела справочной страницы tclvars

Ответ 4

Чтобы прочитать переменную среды оболочки в Tcl script, попробуйте сделать что-то вроде этого:

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 there, use it
    set value $env(VARNAME)
} else {
    # the environment var isn't set, use a default
    set value "the default value"
}

Это .