我有一个调用的脚本:
eval source \{$scriptfile\}
其中$ scriptfile是另一个TCL脚本。有没有办法将参数传递给脚本?我想做点什么:
set sampleData "ID=14678934"
eval source \{$scriptfile\} $sampleData
我知道这是不允许的,但有没有办法将数据传递给使用eval源执行的脚本?
答案 0 :(得分:5)
开始这是一个可怕的做法。调用你正在采购的脚本中的proc会更清晰。
source script.tcl ;# defines proc run_script_with_data
run_script_with_data $data
答案 1 :(得分:3)
解决方案在Tclers Wiki中的以下文章中提供:source with args和SrcFile。
我最喜欢的解决方案是srcfile
:
proc srcfile { filename args } {
global argv
set argv $args
source $filename
}
这种方法的唯一缺点是它会修改argv
,因此您必须确保在脚本的其余部分中不需要它,或者备份和恢复它。