Как прочитать переменную среды оболочки в вашем Tcl script. Так что, пожалуйста, помогите мне. Я очень новичок в TCL.
Прочитать переменную среды Bash в TCL
Ответ 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"
}
Это .