2011-04-01 15 views

Respuesta

25

Utilice $::env para acceder a cualquier variable de entorno, p. para acceder a la variable de entorno TMP hacer esto:

set tmpdir $::env(TMP) 

Más información aquí http://wiki.tcl.tk/1624

+0

Solo escribo tu código y lo ejecuto. Pero no estoy entendiendo. Estoy en tclsh prompt. Mi mensaje es%. así que lo que hice simplemente tecleó el prompt% set tmpdir $ :: env (TMP). La salida es como que no puede leer ":: env (TMP)": no existe tal variable –

+0

En realidad quiero escribir un proc que es tcl que devuelve los valores de la variable de entorno Bash. –

+1

Eso es porque no tiene una variable de entorno llamada TMP. ¿Has leído el enlace que te di? – TrojanName

4
$ export var=42 
$ tclsh 
% puts $env(var) 
42 
+0

La variable de entorno TMP se define en el script bash. así que lo que quiero hacer es acceder a la variable de entorno en el tcl. mi prompt tcl es%. así que finalmente quiero acceder a la variable de entorno en tcl. –

+0

La variable de entorno TMP sería $ env (TMP). ** Pero **: ¿Se llama el script tcl desde el script bash? ¿La variable es global (es decir, exportar)? – hynek

+0

Sí. Está funcionando bien. pero mi pregunta es que cualquiera que sea la variable de entorno definida en script bash o shell solo quiero acceder usando el proceso en tcl. así que por favor ........ –

2

Las variables de entorno son accesibles a través de una función de variable global env (completo es ::env). Usas esto como cualquier otra matriz Tcl.

Si desea imprimir una lista de todas las variables de entorno que puede usar algo como esto:

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

Por supuesto, para tener acceso a una sola variable que utiliza como cualquier otra matriz, por ejemplo:

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

Para más información ver la env page on the Tcler's wiki y the env section of the tclvars man page

+0

Sí, su procedimiento se ejecuta, proporciona todas las variables de entorno. está bien. Pero lo que estoy preguntando aquí. Supongamos en script bash si defino el entorno definido por el usuario como este: ORACLE_SID = DBTEST ORACLE_HOME =/opt/oracle/product/102 export ORACLE_SID ORACLE_HOME Ahora quiero escribir un proc en tcl para acceder a la variable de entorno definida por el usuario. Entonces, ¿cómo puedo hacerlo? por favor .......... –

+0

También leí su enlace. Pero no coincide con mi requerimiento. –

+0

Solo uso 'parray env' cuando deseo volcar variables de entorno. –

1

para leer una variable de entorno shell script Tcl , Trata de hacer algo como esto:

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

Esto podría expresarse así de esta manera:

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

y olvidarse de global.

Puede comprobar para ver si existe la variable haciendo algo como:

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

Esta es source.

Cuestiones relacionadas