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