2016-02-09 133 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'可以帮助。但这只是我只会用于调试的黑客攻击,并非用于生产性用途。 –