我有一个名为test7.tcl的文件:

namespace eval ::dai {
   variable name "ratzip"
   variable birthday "1982"
   proc hello {} {
      variable name
      variable birthday
      puts "Hello, I am $name birthday is $birthday"
   }
}

并且我想以这种方式将此文件来源到另一个文件test8.tcl:
source test7.tcl

::dai::hello

但是它给了我错误:无法读取文件“test7.tcl”:没有这样的文件或目录

但是这两个文件在同一个文件夹下,发生了什么?

最佳答案

要获取与当前正在执行的脚本位于同一目录中的文件,请使用以下命令:

source [file join [file dirname [info script]] "test7.tcl"]

请注意,这在外部脚本(在您的情况下为test8.tcl)中定义的过程内部不起作用,因为它们通常在源代码完成后调用。如果您是这种情况,最简单的解决方法是将info script的输出保存在外部脚本的变量中(或立即获取所有文件,而不是懒惰地获取最终的最佳方法)。

关于tcl - 有关Tcl中来源的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6508453/

10-13 08:40