如何在Tcl的源文件中使用exec语句

时间:2014-07-16 13:58:07

标签: module tcl

我试图在另一个来源的文件中使用以下命令,但该变量似乎没有用处。 PYTHONPATH var由lib//site-packages而不是lib/python2.7/site-packages

填充

my_path的:

set pyver      [ exec python -c {import sys;print 'python%d.%d'%(sys.version_info[0],sys.version_info[1])} ]enter code here
array set paths {
PATH               bin
PYTHONPATH         lib/$pyver/site-packages
}

主:

#%Module1.0########################################
##
##  Modulefile for texworks
#
source my_path
foreach p [array names paths] {
prepend-path $p $paths($p)
}

1 个答案:

答案 0 :(得分:1)

如果你这样初始化数组paths

array set paths {
    PATH               bin
    PYTHONPATH         lib/$pyver/site-packages
}

成员初始化周围的大括号阻止了变量pyver的变量替换。要允许替换变量,您需要用双引号替换大括号(这种风格稍差)或将其写为

array set paths [list \
    PATH               bin \
    PYTHONPATH         lib/$pyver/site-packages \
]

或(分别设置每个成员)

set paths(PATH)       bin
set paths(PYTHONPATH) lib/$pyver/site-packages

或(强制替换)

array set paths [subst {
    PATH               bin
    PYTHONPATH         lib/$pyver/site-packages
}]

文档:arraylistsetsubst