Tcl/Tk快速入门

本文介绍了Tcl/Tk的基础知识,包括Tcl/Tk的历史、主要程序tclsh和wish,以及它们在Linux系统中的使用。此外,还探讨了Tcl的解释型特性和可扩展性,特别是通过 Expect 扩展实现自动化交互。最后提到了学习 Expect 的价值和autoexpect工具的实用性。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

                原贴:http://if.ustc.edu.cn/~xbzhou/blog/archives/tcl_cn/l-tcl/l-tcl-2-1.html


                   
Tcl/Tk 的起源 第 1 页(共2 页)


Tcl 是“工具控制语言(Tool Control Language)”的缩写。Tk 是 Tcl“图形工具箱”的扩展,它提供各种标准的 GUI 接口项,以利于迅速进行高级应用程序开发。

John K. Ousterhout(见图像)于 1988 年开始开发 Tcl/Tk(读作“tickle tee-kay”),然后是加州大学伯克利分校(UCB)的一名教授继续对它进行开发。Tcl 是以可扩展性、短的学习曲线和易于嵌入为特定目标而设计的。Tk 的开发始于 1989 年,第一个版本于 1991 年问世。Ousterhout 博士在他离开 UCB 之后继续开发 Tcl/Tk,然后由于工作需要,他继续为 Sun Microsystems 公司工作。现在,也就是在写本文之时,他在 Scriptics(它开发出 Ajuba Solution,已由 Interwoven 收购)继续改进该语言,目前的稳定版本是 8.3.2,在写本文的时候,8.4 版本正在开发之中。

有关更多详细信息,请参阅“History of Tcl”页面。

                   
工具和文件 第 2 页(共2 页)


在 Linux 系统上研究 Tcl/Tk,需要有两个主要程序。它们是 tclshwish。正如可以从其名称所辨别的那样,所以前者是 Tcl 外壳,常用于为外壳脚本提供执行环境。Wish 类似于 tclsh,它是针对窗口化的 GUI 环境。

输入下列命令,检查这些文件是否存在:

~/tcltk$ which tclsh/usr/bin/tclsh~/tcltk$ which wish/usr/bin/wish   

which 命令将返回指定可执行文件的路径。如果没有看到与这相似的结果,则需要转到 Scriptics Tcl/Tk 页面下载并构建您自己的副本。当然,如果系统上不存在这些程序,并不表示有任何问题。不象 Perl,通常不会将 Tcl/Tk 视为是 Linux 操作的基本要素。我所知道的每个发行版都和某一版本的 Tcl/Tk 一起交付,最常见的扩展作为 CD-ROM 或在线资源库的一部分。从这些资源,这些工具通常很容易安装。如果有困难,请与 GNU/Linux 软件的发行商联系。


                   
Tcl tick 的构成 第 1 页(共15 页)


在下面的清单中,将会发现第一个很常见的示例程序,它是用 Tcl 实现的。这是一个完整的脚本:第一行命令调用 tclsh 环境,第二行命令执行实际工作。用您所选择的文本编辑器创建该脚本,输入 chmod +x hello.tcl 使之成为可执行文件,然后执行它以测试您这件“作品”。

~/tcltk$ cat hello.tcl#!/usr/bin/tclsh puts stdout {Hello, World!}~/tcltk$ ./hello.tclHello, World!   

Tcl 和 Tk 是解释型的、可扩展脚本语言。与 BSD 许可证十分相似,该许可证允许在任何情况下自由使用该软件,只要在所有副本中保留该版权并且在任何分发中一字不差地传递通告。这个许可证条款使 Tcl/Tk 成为自由软件。

Tcl/Tk 是一种解释型环境。可以通过添加预编译的 C 函数来扩展 Tcl 解释器,可从 Tcl 环境内部调用 Tcl 解释器。可以为特定目的或一般的以及广泛使用的而定制这些扩展。我们将在教程的后面看一些扩展并着重看一下第一个扩展 — 非常流行的 Expect

在接下来的几屏中,将回顾 Tcl 语言的一些主要特性,从元字符和全局变量到运算符、数学函数以及核心命令。毕竟,这些命令使 Tcl/Tk 成为有特色的,逐步发展的语言。请记住,在本教程中没有篇幅涉及每条命令。这里只突出一部分,以后您可以更进一步了解 Tcl/Tk。

 

 

                                           
             
 #!/usr/bin/tclsh# filename hello2.tcl# This program code shows # metacharacter usageputs stdout "Hello, World! /a"puts stdout {Hello, World! /a}set Pints 6set Days 7puts stdout "The answer to the / universe is [eval $Pints * $Days]!/n" ***~/tcltk$ ./hello2.tclHello, World!Hello, World! /aThe answer to everything is 42!   
           
             


                                           
Tcl 元字符 第 2 页(共15 页)


           

元字符是在 Tcl/Tk 环境的上下文中有特殊含意的字符或字符对,它们包括分组语句、封装字符串、终止语句以及其它,如下表所示。左边列出的代码中演示了一些元字符。要注意的一个特殊特性是,当使用花括号(防止替代和扩展)代替双引号时,输出中的差异。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
字符 用作
# 注释
; newline 语句分隔符
Name 变量(区分大小写)
Name(idx) 数组变量
Name(j,k,l...) 多维数组
" string " 带替换的引用
{ string } 不带替换的引用
[ string ] 命令替换
/ char 反斜杠替代
/ 行继续(在行尾)

 

 

                               
           
#!/usr/bin/tclsh## Demonstrate global variables# and backslash substitution if {
       $argc >= 1} {    set N 1    foreach Arg $argv {        puts stdout "$N: $Arg/n"        set N [expr $N + 1]        if {
       $Arg == "ring"} {            puts stdout "/a"        }    }} else {    puts stdout "$argv0 on /        X Display $env(DISPLAY)/n"}***~/tcltk$ ./hello3.tcl./hello3.tcl on  X Display :0.0 ~/tcltk$ ./hello3.tcl ring1: ring   
           
             


                                           
Tcl 全局变量和反斜杠替代 第 3 页(共15 页)


           

当 Tcl/Tk 脚本开始运行时,存在几个全局变量(如果在当前环境中为非空,则是预先定义的)。这些变量允许如下对操作系统进行访问:argc 是对脚本自变量的计数,而不是对调用的名称进行计数。 argv 是自变量的列表(不是数组)。argv0 是调用的文件名(可以是符号链接)。env 是根据当前外壳的环境变量名建立下标的数组。errorCode 存储有关最近的 Tcl 错误信息,errorInfo 包含对这同一个错误事件的堆栈跟踪。该列表还有另外 12 个 tcl_xxx 变量,从 tcl_interactivetcl_version。可以在 Tcl/Tk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值