2010-07-16 154 views
2

我是TCL的新手。我如何在Windows和Linux上运行一个通用的tcl脚本?我想先查看平台类型,然后调用适当的tcl proc。在Windows和Linux上运行常见的TCL脚本

+1

tcl已经与平台无关。所以这个问题很难解释。你可以说得更详细点吗?为什么要检查平台类型?你在问“平台”软件包吗? http://tmml.sourceforge.net/doc/tcl/platform.html – 2010-07-16 02:22:35

回答

5

您可以从查看tcl_platform数组开始。在我的(窗口)机本报告如下:

% parray tcl_platform 
tcl_platform(byteOrder) = littleEndian 
tcl_platform(machine) = intel 
tcl_platform(os)  = Windows NT 
tcl_platform(osVersion) = 5.1 
tcl_platform(platform) = windows 
tcl_platform(threaded) = 1 
tcl_platform(tip,268) = 1 
tcl_platform(tip,280) = 1 
tcl_platform(user)  = username 
tcl_platform(wordSize) = 4 

在Unix系统中的操作系统和OSVERSION将是uname -suname -r respectivley报告的值。如果你需要更复杂的东西,那么平台包可能是一条可行的路!

6

是的工作,杰克逊。基本上,我想知道我的OS脚本运行上,例如,

set OS [lindex $tcl_platform(os) 0] 
if { $OS == "Windows" } { 
    perform this ... 
} else { 
    perform that ... 
} 
+4

通常只需检查'$ tcl_platform(platform)'就足够了,因为最新版本的Windows足够类似于大多数Unix,并且足够接近。 – 2010-07-16 23:15:51

3

大多数事情Tcl的工作在Windows和Unix一样的;绝大多数细节都存在差异。为了处理其余部分:

  • 使用file join,而不是在两者之间/串联。
  • 使用file nativename来创建文件名以切换到子进程。
  • 请注意load;它所做的并不是随身携带的。
  • info命令有一些有用的东西,比如Tcl解释器的名字(info nameofexecutable),所以你可以在子进程中轻松简单地启动解释器。
  • 有些东西只是不可移植的(例如,访问Windows注册表)。

也有一些细微的差别,但是您必须指导我们如何处理您的程序,以便我们知道什么是重要的(例如,Windows锁定可执行文件在运行时Unix不会;有时会改变事物)。

相关问题