Переменная среды чтения Bash в TCL - PullRequest
23 голосов
/ 01 апреля 2011

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

Ответы [ 4 ]

31 голосов
/ 01 апреля 2011

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

set tmpdir $::env(TMP)

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

5 голосов
/ 01 апреля 2011
$ export var=42
$ tclsh
% puts $env(var)
42
3 голосов
/ 01 апреля 2011

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

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

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

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

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

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

2 голосов
/ 17 апреля 2015

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

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"
}

Это источник .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...