我正在使用此命令来获取get.tcl文件并给出选项'verbose'和'instant':
source -verbose -instant get.tcl
上面的命令在tcl 8.4中对我有用,但在tcl 8.5中显示了这个错误
source(脚本错误#args:应该是“source_orig? - 编码名称? 文件名“
如果我只写
source get.tcl
它在tcl 8.5中传递
tcl 8.5中是否有与此相关的更改?
答案 0 :(得分:3)
source
命令只接受一个选项(自8.5起),-encoding
,用于指定正在读取的文件的编码(而不是{返回的默认编码猜测) {1}})。它只是将文件读入内存并(内部等效于)encoding system
内容。
您可以在执行eval
之前写入您想要的任何变量,包括source
等全局变量。有了这个(加上argv
和uplevel
,根据需要,也可能catch
),您可以模拟将脚本作为子进程运行。但是,没有文件可能更容易处理这样的参数,而是为了定义一个在采购后立即调用的命令。
答案 1 :(得分:1)
您可以通过执行以下操作将参数传递给源文件:
set ::argv [list -verbose -instant]
source get.tcl
我建议使用:
set ::argv [list -- -verbose -instant]
- 将停止tclsh处理 - 。之后的任何参数 有时tclsh会识别出一个适合你的论点 编程和处理它。您的程序需要了解 - 并妥善处理。