评估文本文件中的Tcl表达式

时间:2014-06-13 05:59:46

标签: tcl

在文本文件中,我有一些Tcl表达式,如:

# DO NOT EDIT!!
# [exec whoami] - [exec date]
# Generated config file

基本上,此文本文件是配置文件的一部分。我想读取文件并用实际值替换这些表达式。

1 个答案:

答案 0 :(得分:4)

subst命令就是为此目的而设计的。

set f [open $theFileName]
set unsubstituted [read $f]
close $f

set substituted [subst $unsubstituted]

# Now use the contents...

请注意,这可以更改脚本中的所有内容,因为set是可能存在的命令之一!要稍微限制潜在的伤害,请在子解释器中运行:

set f [open $theFileName]
set unsubstituted [read $f]
close $f

set i [interp create]
set substituted [interp eval $i [list subst $unsubstituted]]
interp delete $i

该脚本仍然可以exit(或exec rm -rf *;它真的像运行任意程序一样不安全,但至少无法意外更改内部配置。


whoami产生的信息可直接在Tcl中以$tcl_platform(user)形式提供。

exec date生成的信息可直接在Tcl中以clock format [clock seconds]的形式提供。嗯,默认情况下我的字段顺序略有不同似乎......