2014-07-12 98 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]'"