我有一个tcl文件并在该文件内定义了我的环境变量。像下面的东西如何读取shell文件中的环境变量
set env(ET_PINASSIGN_SCRIPT) $ET_PINASSIGN_SCRIPT
其中$ET_PINASSIGN_SCRIPT
变量将有一个用户传入的输入值。现在我需要在shell文件中读取这个env变量(#!/bin/ksh
)。这是我正在尝试和不工作
$env ET_PINASSIGN_SCRIPT .
有什么建议吗? 谢谢
我有一个tcl文件并在该文件内定义了我的环境变量。像下面的东西如何读取shell文件中的环境变量
set env(ET_PINASSIGN_SCRIPT) $ET_PINASSIGN_SCRIPT
其中$ET_PINASSIGN_SCRIPT
变量将有一个用户传入的输入值。现在我需要在shell文件中读取这个env变量(#!/bin/ksh
)。这是我正在尝试和不工作
$env ET_PINASSIGN_SCRIPT .
有什么建议吗? 谢谢
我知道这是不可能的。正在运行的程序,例如。你的脚本,收到一个重复的环境,并且可以修改它。但是当程序停止运行时,它会随着它的环境和变化而消失。
有几个直接的方法来沟通“从死亡”过程。您可以创建一个临时文件,或从退出代码返回简单的整数。
另一种方式,是对的方式,它们共享相同的环境中同时运行其他程序,对环境
更多信息:
http://en.wikipedia.org/wiki/Environment_variable
编辑:我觉得我没不够清楚:我只想指出,修改其他程序环境的编程是'极端'(即危险)编程。所有类型的技巧都可以完成,这会对计算机的使用产生持久的影响。
最简单的方法是使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]'"