2014-07-12 61 views
0

我有一个tcl文件并在该文件内定义了我的环境变量。像下面的东西如何读取shell文件中的环境变量

set env(ET_PINASSIGN_SCRIPT) $ET_PINASSIGN_SCRIPT 

其中$ET_PINASSIGN_SCRIPT变量将有一个用户传入的输入值。现在我需要在shell文件中读取这个env变量(#!/bin/ksh )。这是我正在尝试和不工作

$env ET_PINASSIGN_SCRIPT . 

有什么建议吗? 谢谢

回答

1

我知道这是不可能的。正在运行的程序,例如。你的脚本,收到一个重复的环境,并且可以修改它。但是当程序停止运行时,它会随着它的环境和变化而消失。

有几个直接的方法来沟通“从死亡”过程。您可以创建一个临时文件,或从退出代码返回简单的整数。

另一种方式,是对的方式,它们共享相同的环境中同时运行其他程序,对环境

更多信息:

http://en.wikipedia.org/wiki/Environment_variable

编辑:我觉得我没不够清楚:我只想指出,修改其他程序环境的编程是'极端'(即危险)编程。所有类型的技巧都可以完成,这会对计算机的使用产生持久的影响。

0

最简单的方法是使Tcl的代码编写一个shell脚本设置变量到标准输出(带有puts),并然后执行:

eval `tclsh yourscript.tcl` 

在你的shell。


Tcl的代码可能会是这样的:

puts "ET_PINASSIGN_SCRIPT='$ET_PINASSIGN_SCRIPT'" 

除非你将不必担心任何嵌入'字符,所以可能会做......

puts "ET_PINASSIGN_SCRIPT='[string map {' '\\''} $ET_PINASSIGN_SCRIPT]'"