2016-02-09 151 views
0

我尋找一個保存運行tcl腳本當前路徑的代碼。我發現已經有一個代碼,但它不起作用。TCL列出運行腳本的相對路徑

proc getScriptDirectory {} { 
    set dispScriptFile [file normalize [info script]] 
    set scriptFolder [file dirname $dispScriptFile] 
    return $scriptFolder 
} 

有沒有人想法?

回答

2

info script命令的工作原理,但只有腳本正在運行,而不是當它創建的過程正在運行時。代碼運行時必須保存該值,以便稍後使用它。

# The two-argument version of [variable] initialises the variable's value 
variable dispScriptFile [file normalize [info script]] 

proc getScriptDirectory {} { 
    variable dispScriptFile 
    set scriptFolder [file dirname $dispScriptFile] 
    return $scriptFolder 
} 

這樣做時,這種方式有一般不具有可變污染顯著問題,因爲你可以在你定義的命名空間使用一個變量,而且幾乎總是當你想要這個你要定義一個命名空間。

+0

對不起,我解釋得很糟糕。劇本已經完成了他的工作。在這個腳本的結尾處,我想將當前路徑保存在一個變量中.. – ManInTheMiddle

+0

'info frame'可以幫助。但這只是我只會用於調試的黑客攻擊,並非用於生產性用途。 –