有没有办法将params传递给使用eval源运行的TCL中的脚本?

时间:2010-06-02 19:20:51

标签: tcl eval

我有一个调用的脚本:

 eval source \{$scriptfile\}

其中$ scriptfile是另一个TCL脚本。有没有办法将参数传递给脚本?我想做点什么:

set sampleData "ID=14678934"
eval source \{$scriptfile\} $sampleData 

我知道这是不允许的,但有没有办法将数据传递给使用eval源执行的脚本?

2 个答案:

答案 0 :(得分:5)

开始这是一个可怕的做法。调用你正在采购的脚本中的proc会更清晰。

source script.tcl  ;# defines proc run_script_with_data
run_script_with_data $data

答案 1 :(得分:3)

解决方案在Tclers Wiki中的以下文章中提供:source with argsSrcFile

我最喜欢的解决方案是srcfile

proc srcfile { filename args } {
  global argv

  set argv $args
  source $filename
}

这种方法的唯一缺点是它会修改argv,因此您必须确保在脚本的其余部分中不需要它,或者备份和恢复它。