我们可以将选项传递给 tcl 8.5 中的 tcl source 命令吗
can we pass options to tcl source command in tcl 8.5
我正在使用此命令获取 get.tcl 文件并提供选项 'verbose' 和 'instant':
source -verbose -instant get.tcl
以上命令在 tcl 8.4 中对我有效,但在 tcl 8.5 中显示此错误
source (script wrong # args: should be "source_orig ?-encoding name?
fileName"
如果我只写
source get.tcl
它在 tcl 8.5 中获得通过
tcl 8.5 中是否有与此相关的更改?
source
命令只接受一个选项(自8.5起),-encoding
,用于指定正在读取的文件是什么编码(而不是返回的默认猜测编码通过 encoding system
)。它所做的只是将文件读入内存和(内部等效于)eval
内容。
您可以在执行 source
之前写入任何您想要的变量,包括像 argv
这样的全局变量。有了它(加上根据需要适当使用 uplevel
和 catch
,也许还有 interp create
),您可以模拟 运行 脚本作为子进程。但是,不让文件期望处理这样的参数可能更容易,而是让它定义一个您在采购后立即调用的命令。
您可以通过执行以下操作将参数传递给源文件:
set ::argv [list -verbose -instant]
source get.tcl
我推荐使用:
set ::argv [list -- -verbose -instant]
-- 将阻止 tclsh 处理 -- 之后的任何参数。
有时 tclsh 会识别出一个适合您的参数
对其进行编程和处理。您的程序将需要了解
-- 并妥善处理。
我正在使用此命令获取 get.tcl 文件并提供选项 'verbose' 和 'instant':
source -verbose -instant get.tcl
以上命令在 tcl 8.4 中对我有效,但在 tcl 8.5 中显示此错误
source (script wrong # args: should be "source_orig ?-encoding name? fileName"
如果我只写
source get.tcl
它在 tcl 8.5 中获得通过
tcl 8.5 中是否有与此相关的更改?
source
命令只接受一个选项(自8.5起),-encoding
,用于指定正在读取的文件是什么编码(而不是返回的默认猜测编码通过 encoding system
)。它所做的只是将文件读入内存和(内部等效于)eval
内容。
您可以在执行 source
之前写入任何您想要的变量,包括像 argv
这样的全局变量。有了它(加上根据需要适当使用 uplevel
和 catch
,也许还有 interp create
),您可以模拟 运行 脚本作为子进程。但是,不让文件期望处理这样的参数可能更容易,而是让它定义一个您在采购后立即调用的命令。
您可以通过执行以下操作将参数传递给源文件:
set ::argv [list -verbose -instant]
source get.tcl
我推荐使用:
set ::argv [list -- -verbose -instant]
-- 将阻止 tclsh 处理 -- 之后的任何参数。
有时 tclsh 会识别出一个适合您的参数
对其进行编程和处理。您的程序将需要了解
-- 并妥善处理。