web-dev-qa-db-fra.com

Lire la variable d'environnement Bash dans TCL

Comment lire une variable d'environnement Shell dans votre script Tcl. Alors, aidez-moi, s'il vous plaît. Je suis très nouveau dans TCL.

21
galvin Verghese

Utilisez $::env pour accéder aux variables d’environnement, par ex. Pour accéder à la variable d'environnement TMP, procédez comme suit:

set tmpdir $::env(TMP)

Plus d'infos ici http://wiki.tcl.tk/1624

30
TrojanName
$ export var=42
$ tclsh
% puts $env(var)
42
5
hynek

Les variables d'environnement sont accessibles via la variable globale intégrée env (pleinement qualifié, il s'agit de ::env). Vous utilisez ceci comme n'importe quel autre tableau Tcl. 

Si vous souhaitez imprimer une liste de toutes les variables d'environnement, vous pouvez utiliser quelque chose comme ceci:

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

Bien sûr, pour accéder à une seule variable, utilisez-la comme n'importe quel autre tableau, par exemple:

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

Pour plus d'informations, consultez la page env ​​sur le wiki de Tcler et la section env de la page de manuel tclvars

3
Bryan Oakley

Pour lire une variable d’environnement Shell dans un script Tcl, essayez de procéder comme suit:

global env
set olddisplay $env(DISPLAY)
set env(DISPLAY) unix:0

Cela pourrait être exprimé aussi bien de cette façon:

set olddisplay $::env(DISPLAY)
set ::env(DISPLAY) unix:0

et oubliez global.

Vous pouvez vérifier si la variable existe en faisant quelque chose comme:

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

C'est source .

1
serenesat