精华内容
下载资源
问答
  • TCL语言教程

    2018-12-15 22:10:58
    tcl脚本语言教程。里面详细的语法讲解和tcl语言的使用
  • Tcl (最早称为"工具命令语言""Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,...
  • Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以 ? 解释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦 ? ,这片文章对Tcl有很好的描述和说明。极具可读性
  • TCL语言

    2021-07-17 02:37:46
    Tcl (最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,...

    本词条缺少概述图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧!

    Tcl (最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本编程, GUI和测试等方面。

    中文名

    工具命令语言

    外文名

    Tool Command Language简    称

    TCL语言

    类    别

    脚本语言

    TCL语言基本概念

    编辑

    语音

    Tcl(最早称为“工具命令语言”"Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本编程,GUI和测试等方面。TCL念作“踢叩” "tickle". Tcl的特性包括:

    * 任何东西都是一条命令,包括语法结构(for, if等)。

    * 任何事物都可以重新定义和重载。

    * 所有的数据类型都可以看作字符串。

    * 语法规则相当简单

    * 提供事件驱动给Socket和文件。基于时间或者用户定义的事件也可以。

    * 动态的域定义。

    * 很容易用C,C++,或者Java扩展。

    *解释语言,代码能够动态的改变。

    * 完全的Unicode支持。

    * 平台无关。Win32,UNIX,Mac上都可以跑。

    * 和Windows的GUI紧密集成;Tk

    * 代码紧凑,易于维护。

    TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl,Incr Tcl等。另外SNIT扩展本身就是用TCL写的。

    使用最广泛的TCL扩展是TK。 TK提供了各种OS平台下的图形用户界面GUI。连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(passwd,ftp,telnet等命令驱动的外壳).

    TCL语言具体例子

    编辑

    语音

    下面是TCL程序的例子:

    #!/bin/sh

    # next line restarts using tclsh in path \

    exec tclsh ${1+"$@"}

    # echo server that can handle multiple

    # simultaneous connections.

    proc newConnection { sock addr port } {

    # client connections will be handled in

    # line-buffered, non-blocking mode

    fconfigure $sock -blocking no -buffering line

    # call handleData whensocketis readable

    fileevent $sock readable [ list handleData $sock ]

    }

    proc handleData {

    puts $sock [ gets $sock ]

    if { [ eof $sock ] } {

    close $sock

    }

    }

    # handle all connections to port given

    # as argument when server was invoked

    # by calling newConnection

    set port [ lindex $argv 0 ]

    socket-server newConnection $port

    # enter the event loop by waiting

    # on a dummy variable that is otherwise

    # unused.

    vwait forever

    另外一个TK的例子 (来自 A simple A/D clock) 它使用了定时器时间,3行就显示了一个时钟。

    proc every {msbody} {eval $body; after $ms [info level 0]}

    pack [label .clock -textvar time]

    every 1000 {set ::time [clock format [clock sec] -format %H:%M:%S]} ;# RS

    解释:第一行定义了过程every, 每隔ms毫秒,就重新执行body代码。第二行创建了标签起内容由time变量决定。第3行中设置定时器,time变量从当前时间中每秒更新一次。

    Tcl被广泛的用做script语言,大多数情况下,Tcl和Tk(“Tool Kit”)库同时使用,Tk是一系列令Tcl易于编写图形用户接口的命令和过程

    Tcl的一个重要特性是它的扩展性。如果一个程序需要使用某些标准Tcl没有提供的功能,可以使用c语言创造一些新的Tcl命令,并很容易的融合进去。正是由于Tcl易于扩展,很多人为它编写了扩展包,并在网上共享。

    Tcl和其他编程语言例如c不同,它是一种解释语言而非编译语言。Tcl程序由一系列Tcl命令组成,在运行时由Tcl解释器解释运行。解释运行的一个优点是它可以自己为自己生成Tcl script。

    TCL语言参数定义

    编辑

    语音

    Tcl的Procedures 和c的函数差不多. 它们有参数,它们返回值。基本定义方法是:

    proc name argListbody

    当一个procedure被定义,它就被看做是一个命令,如同Tcl的自带命令一样,通过名字来呼叫,名字后面跟上参数。

    缺省的,procedure的返回值是它的最后一个命令结果。但也可以通过return命令来返回其他值。Return值可以在procedure的任何地方,一旦执行,procedure就此返回。

    Example 5.1:

    proc sum_proc {a b} {

    return [expr $a + $b]

    }

    proc magnitude {num} {

    if {$num > 0} {

    return $num

    }

    set num [expr $num * (-1)]

    return $num

    }

    set num1 12

    set num2 14

    set sum [sum_proc $num1 $num2]

    puts "The sum is $sum"

    puts "The magnitude of 3 is [magnitude 3]"

    puts "The magnitude of -2 is [magnitude -2]"

    Output:

    The sum is 26

    The magnitude of 3 is 3

    The magnitude of -2 is 2

    在procedure中可以通过set创造变量,但是变量只在procedure中有效,而且一旦procedure返回,这些变量就不可访问。如果procedure需要访问主程序中的变量,就需要使用global关键字。

    Example 5.2:

    proc dumb_proc {} {

    set myvar 4

    puts "The value of the local variable is $myvar"

    global myglobalvar

    puts "The value of the global variable is $myglobalvar"

    }

    set myglobalvar 79

    dumb_proc

    Output:

    The value of the local variable is 4

    The value of the global variable is 79

    TCL语言变量

    编辑

    语音

    不像c,Tcl的变量在使用前不需要声明。Tcl的变量在它首次被赋值时产生,使用set命令。变量可以用unset命令删除,虽然并不强制需要这样做。

    变量的值通过$符号访问,也叫变量交换。

    Tcl是一个典型的”弱类型定义”语言,这意味者任何类型可以存储在任何变量中。例如,同一个变量可以存储数字,日期,字符串甚至另一段Tcl script.

    Example 1.1:

    set foo "john"

    puts "Hi my name is $foo"

    Output: Hi my name is john

    Example 1.2:

    set month 2

    set day 3

    set year 97

    set date "$month:$day:$year"

    puts $date

    Output: 2:3:97

    Example 1.3:

    set foo "puts hi"

    eval $foo

    Output: hi

    在这个例子里,变量foo存储了另外一段Tcl script.

    包括数学表达式,关系表达式,通常用 expr命令。

    Example 2.1:

    expr 0 == 1

    Output: 0

    Example 2.2:

    expr 1 == 1

    Output: 1

    两数比较,true则输出1,false输出0

    Example 2.3:

    expr 4 + 5

    Output: 9

    Example 2.4:

    expr sin(2)

    Output: 0.909297

    命令传递

    以运算结果替代Tcl命令中的部分

    Example 3.1:

    puts "I am [expr 10 * 2] years old, and my I.Q. is [expr 100 - 25]"

    Output: I am 20 years old, and my I.Q. is 75

    方括号是命令传递的标志

    Example 3.2:

    set my_height 6.0

    puts "If I was 2 inches taller, I would be [expr $my_height + (2.0 / 12.0)] feet tall"

    Output: If I was 2 inches taller, I would be 6.16667 feet tall

    命令流控制

    Tcl有判断流转(if-else; switch)和循环控制(while; for; foreach)

    Example 4.1:

    set my_planet "earth"

    if {$my_planet == "earth"} {

    puts "I feel right at home."

    } elseif {$my_planet == "venus"} {

    puts "This is not my home."

    } else {

    puts "I am neither from Earth, nor from Venus."

    }

    set temp 95

    if {$temp < 80} {

    puts "It's a little chilly."

    } else {

    puts "Warm enough for me."

    }

    Output:

    I feel right at home.

    Warm enough for me.

    Example 4.2:

    set num_legs 4

    switch $num_legs {

    2 {puts "It could be a human."}

    4 {puts "It could be a cow."}

    6 {puts "It could be an ant."}

    8 {puts "It could be a spider."}

    default {puts "It could be anything."}

    }

    Output:

    It could be a cow.

    Example 4.3:

    for {set i 0} {$i < 10} {incr i 1} {

    puts "In the for loop, and i == $i"

    }

    Output:

    In the for loop, and i == 0

    In the for loop, and i == 1

    In the for loop, and i == 2

    In the for loop, and i == 3

    In the for loop, and i == 4

    In the for loop, and i == 5

    In the for loop, and i == 6

    In the for loop, and i == 7

    In the for loop, and i == 8

    In the for loop, and i == 9

    Example 4.4:

    set i 0

    while {$i < 10} {

    puts "In the while loop, and i == $i"

    incr i 1

    }

    Output:

    In the while loop, and i == 0

    In the while loop, and i == 1

    In the while loop, and i == 2

    In the while loop, and i == 3

    In the while loop, and i == 4

    In the while loop, and i == 5

    In the while loop, and i == 6

    In the while loop, and i == 7

    In the while loop, and i == 8

    In the while loop, and i == 9

    Example 4.5:

    foreach vowel {a e i o u} {

    puts "$vowel is a vowel"

    }

    Output:

    a is a vowel

    e is a vowel

    i is a vowel

    o is a vowel

    u is a vowel

    Procedures

    TCL语言特殊数组

    编辑

    语音

    Lists就好像是Tcl中的一种特殊的数组。它把一堆东西放成一个集合,然后就像操作一个整体一样的操作它。

    Example 6.1:

    set simple_list "John Joe Mary Susan"

    puts [lindex $simple_list 0]

    puts [lindex $simple_list 2]

    Output:

    John

    Mary

    注意list的index是从0开始的

    Example 6.2:

    set simple_list2 "Mike Sam Heather Jennifer"

    set compound_list [list $simple_list $simple_list2]

    puts $compound_list

    puts [llength $compound_list]

    Output:

    {John Joe Mary Susan} {Mike Sam Heather Jennifer}

    2

    Example 6.3:

    set mylist "Mercury Venus Mars"

    puts $mylist

    set mylist [linsert $mylist 2 Earth]

    puts $mylist

    lappend mylist Jupiter

    puts $mylist

    Output:

    Mercury Venus Mars

    Mercury Venus Earth Mars

    Mercury Venus Earth Mars Jupiter

    Arrays

    Tcl数组在使用前无须定义,大小也不用指定。

    Example 7.1:

    set myarray(0) "Zero"

    set myarray(1) "One"

    set myarray(2) "Two"

    for {set i 0} {$i < 3} {incr i 1} {

    puts $myarray($i)

    }

    Output:

    Zero

    One

    Two

    Example 7.2:

    set person_info(name) "Fred Smith"

    set person_info(age) "25"

    set person_info(occupation) "Plumber"

    foreach thing {name age occupation} {

    puts "$thing == $person_info($thing)"

    }

    Output:

    name == Fred Smith

    age == 25

    occupation == Plumber

    这个例子指出数组的index不需要是数字,其他类型的数据也可以。

    Example 7.3:

    set person_info(name) "Fred Smith"

    set person_info(age) "25"

    set person_info(occupation) "Plumber"

    foreach thing [array names person_info] {

    puts "$thing == $person_info($thing)"

    }

    Output:

    occupation == Plumber

    age == 25

    name == Fred Smith

    Strings

    字符串是Tcl中最常用的类型,string有很多使用参数,可以参照Tcl手册。使用方法:

    string option arg arg ...

    Example 8.1:

    set str "This is a string"

    puts "The string is: $str"

    puts "The length of the string is: [string length $str]"

    puts "The character at index 3 is: [string index $str 3]"

    puts "The characters from index 4 through 8 are: [string range $str 4 8]"

    puts "The index of the first occurrence of letter \"i\" is: [string first i $str]"

    Output:

    The string is: This is a string

    The length of the string is: 16

    The character at index 3 is: s

    The characters from index 4 through 8 are: is a

    The index of the first occurrence of letter "i" is: 2

    Input/Output

    Tcl的绝大多数输入/输出是通过puts和gets做到的。Puts命令显示在console上,gets命令从console输入上取得数据,并存储在某个变量中。

    TCL语言文件句柄

    编辑

    语音

    channelID可以理解为c的文件句柄,varName如果定义,输入值就赋给它,gets返回读入的字节数,否则gets直接返回输入值。

    Example 9.1:

    puts -nonewline "Enter your name: "

    set bytesread [gets stdin name]

    puts "Your name is $name, and it is $bytesread bytes long"

    Output: (note that user input is shown in italics)

    Enter your name: Shyam

    Your name is Shyam, and it is 5 bytes long

    Example 9.2:

    set f [open "/tmp/myfile" "w"]

    puts $f "We live in Texas. It's already 110 degrees out here."

    puts $f "456"

    close $f

    Output: (none)

    Open打开了一个 "/tmp/myfile" 作为channel. 用法是:

    open name access

    access参数指出打开文件的方式,”w”是读写。这时可以用puts $f把内容写入文件

    Example 9.3:

    set f [open "/tmp/myfile" "r"]

    set line1 [gets $f]

    set len_line2 [gets $f line2]

    close $f

    puts "line 1: $line1"

    puts "line 2: $line2"

    puts "Length of line 2: $len_line2"

    Output:

    line 1: We live in Texas. It's already 110 degrees out here.

    line 2: 456

    Length of line 2: 3

    这个例子假设已知文件只有两行,如果不是,则需要使用循环,用eof来找到文件尾。

    eval

    eval命令会把它的参数直接送往解释器。

    Example 10.1:

    set foo "set a 22"

    eval $foo

    puts $a

    Output:

    22

    单纯的执行$foo不会成功。

    catch

    Example 10.2:

    set retval [catch {set f [open "nosuchfile" "r"]}]

    if {$retval == 1} {

    puts "An error occured"

    }

    Output: (this output occurs if there is no file named "nosuchfile" in the current directory).

    An error occured

    Catch 参数记录一个script的执行情况,如果返回值为1,则执行出错。用来进行错误处理。

    展开全文
  • TCL脚本语言被集成在了xilinx的Vivado工具中,使用该语言可以方便快速的实现很多vivado需要手动操作,甚至不能手动操作的功能,极大的加快开发和验证效率。举例来说,我曾用TCL脚本实现jtag一键式加载逻辑(先手动...
  • 简述TCL语言的应用

    2021-07-17 02:37:39
    Tcl (早称为"工具命令语言""Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本...

    Tcl (早称为"工具命令语言""Tool Command Language", 但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。 由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被用于 快速原型开发,脚本编程, GUI和测试等方面。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl 提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命令,和(c)一个 C 接口,工具通过它用特定于工具的命令增加内置命令。TCL本身不提供面向对象的支持。但是语言本身很容易扩展到支持面向对象。许多C语言扩展都提供面向对象能力,包括XOTcl, Incr Tcl 等。另外SNIT扩展本身就是用TCL写的。使用广泛的TCL扩展是TK. TK提供了各种OS平台下的图形用户界面GUI.连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上。另一个流行的扩展包是Expect. Expect提供了通过终端自动执行命令的能力,例如(passwd, ftp, telnet等命令驱动的外壳)。Tcl 在与窗口组件库整合的时候特别有吸引力:它通过了提供变量、过程、表达式等机制增进了组件的可编程性;它允许用户编程组件的外观和动作二者;并且它在交互式程序之间提供一个简单但强力的通信机制

    作为一种脚本语言,Tcl具有简单的语法

    Tcl语法简介

    作为一种脚本语言,Tcl具有简单的语法。cmd arg arg arg 一条Tcl命令由空格分割的单词组成。 其中, 个单词是命令名称, 其余的是命令参数 .Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电路 CAD 设计中,很多时间是花在编程建立测试环境上。并且,环境一旦发生了变化,就要重新修改代码以适应。这种费力而又低效的方法,迫使 Ousterhout 教授力图寻找一种新的编程语言,它即要有好的代码可重用性,又要简单易学,这样就促成了Tcl语言的产生。

    Tcl 初的构想的是希望把编程按照基于组件的方法,即与其为单个的应用程序编写成百上千行的程序代码,不如寻找一个种方法将程序分割成一个个小的, 具备一定"完整"功能的,可重复使用的组件。这些小的组件小到可以基本满足一些独立的应用程序的需求,其它部分可由这些小的组件功能基础上生成。不同的组件有不同的功能,用于不同的目的。并可为其它的应用程序所利用。

    按照 Ousterhout 教授的定义, Tcl 是一种可嵌入的命令脚本化语言 (Command Script Language)。脚本语言是比较多的,一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本(Script),就是含有bind和alias等命令的集合,你可以把这个集合存为一个独立的文件然后在需要的时候执行,这样就可以方便你在CS中的使用。脚本可以存为后缀名为。cfg的文件放在cstrike文件夹下,执行时在控制台输入:exec(脚本文件名)。cfg即可。比如将一个脚本存为 buys.cfg文件,则在控制台中输入:execbuys.cfg则可以实现我们所需要的功能。要实现一个命令只要把这一过程定义(alias)好,并且分配一个键位给这个命令,以后只要按分配好的键位,就可以实现这一过程。所有的脚本都是通过这一方法实现的。 "可嵌入"是指把很多应用有效,无缝地集成在一起。"命令"是指每一条 Tcl 语句都可以理解成命令加参数的形式:

    命令 [参数 1] [参数 2] [参数 3] [参数 4] …… [参数 N]

    脚本化是指 Tcl 为特殊的,特定的任务所设计。但从现在角度看,可以说 Tcl 是一种集 C 语言灵活强大的功能与 BASIC 语言易学高效的风格于一身的通用程序设计语言。BASIC(Beginners' All-purpose Symbolic Instruction Code,又译培基),意思就是"初学者的全方位符式指令代码",是一种设计给初学者使用的程序设计语言。BASIC是一种直译式的编程语言,在完成编写后不须经由编译及连结等手续即可执行,但如果需要单独执行时仍然需要将其建立成执行档。

    Tk (Tool Kit) 是基于 Tcl 的图形程序开发工具箱, 是 Tcl 的重要扩展部分。Tk 隐含许多 C/C++ 程序员需要了解的程序设计细节, 可快速地开发基于图形界面 Windows 的程序。据称, 用 Tcl/Tk 开发一个简单的 GUI 应用程序只需几个小时, 比用 C/C++ 要提高效率十倍。

    Tcl 代表了"tool command language - 工具命令语言".它由一个库包组成,程序可以把它用作自己的命令语言的基础。Tcl 的开发由两项观察所推动。项观察是,通用可编程命令语言通过允许用户用命令语言写程序来扩展工具的内置设施,从而扩大了工具的能力。在强力的命令语言之中众所周知的例子是 UNIX shell[5] 和 Emacs 编辑器[8].Emacs是一种强大的文本编辑器,在程序员和其他以技术工作为主的计算机用户中广受欢迎。EMACS,即Editor MACroS(编辑器宏)的缩写,Emacs不仅仅是一个编辑器,他是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全  emacs功能的操作系统中,在基于编辑器的功能基础上,Emacs自行开发了一个"bourne-shell-like"的shell: EShell.EmacsEmacs既可以在文本终端也可以在图形用户界面(GUI)环境下运行。在各自情况下,出现的有着不同寻常能力的计算环境,在很大程度上是因为能获得可编程的命令语言。

    第二个促成它的观察是交互式应用正在增长。在 1970 年代晚期和 1980 年代早期的分时环境中,几乎所有的程序都是面向批处理的。典型的使用交互式的命令 shell 来调用它们。除了 shell 之外,只有少数其他的程序是交互式的,比如编辑器和邮件器。正好相反,今天使用的个人工作站,带有它们自己的光栅显示器和鼠标,光栅扫描式图形显示器简称光栅显示器,是画点设备,可看作是一个点阵单元发生器,并可控制每个点阵单元的亮度。其性能指标有1. 点距和可视面积 2. 分辨率(真实分辨率) 3. 亮度和对比度4. 响应时间及刷新频率5. 可视角度6. 显示色彩。场频、行频及视频带宽,鼓励了一种不同的系统结构,在这里大量的程序是交互式的,并且常见的交互方式是直接用鼠标操纵单独的应用。此外,今天能获得的大显示器使很多交互式的应用立即活跃起来成为可能,而对于在十年前很小的屏幕这是不实际的。

    不幸的是,很少的今天的交互式程序拥有 shell 或 Emacs 命令语言的能力。在这里好的命令语言是存在着的,它们趋向与特定的程序捆绑在一起。每个新的交互式程序都要求开发一个新的命令语言。在多数情况下,应用程序员没有时间或爱好去实现一个通用设施(特别是在应用自身很简单的时候),所以结果的命令语言趋向于带有不充分的功能和笨拙的语法。

    Tcl 是一个独立于应用的命令语言。它作为一个 C 库包存在,可以用于很多不同的程序中。Tcl 库提供了用于简单但完全可编程的命令语言的一个分析器。这个库还实现了提供了通用的编程构造的一组内置命令,比如变量、列表、表达式、条件、循环和过程。单个的应用程序可以用特定于应用的命令来扩展基本的 Tcl 语言。Tcl 库还提供一组实用工具例程来简化特定于工具的命令的实现。

    我相信 Tcl 在窗口环境中是特别有用的,它提供了两项优势。首先,它可以用做编制应用的界面的一个通用机制。如果一个工具基于 Tcl,则应当相对容易的去修改应用的用户界面,并使用新命令来扩展这个界面。其次和更重要的是,Tcl 为工具之间通信提供一种统一的框架。

    Tcl 是不寻常的因为它提供两种不同的接口: 给用户发起 Tcl 命令的一个文本接口,和给它所嵌入的应用的一个过程接口。这些接口的每个都必须是简单的、强力的和高效的。在语言设计中有四个主要的因素:

    [1] 语言用于命令。几乎所有 Tcl"程序"都是短小的,很多只有一行长。多数程序将是键入的,执行或者几次,接着就丢弃了。这提示了这门语言应当有一个简单的语法,以便于键入命令。多数现存的编程语言都有复杂的语法;在写长程序的时候有益,但如果用做命令语言就笨拙了。

    [2] 语言必须是可编程的。它应当包含通用编程构造,比如变量、过程、条件和循环,这样用户可以通过写 Tcl 过程来扩展内置的命令。可扩展性也要求简单的语法:这使 Tcl 程序生成其他 Tcl 程序变得容易了。

    [3] 语言必须允许一个简单而高效的解释器。由于 Tcl 库要包含到许多小程序中,特别是在没有共享库的机器上,解释器必须不占用太多的内存。用来解释 Tcl 命令的机制必须足够快,可用于每秒发生上百次的事件,比如鼠标移动。

    [4] 语言必须允许对 C 应用的一个简单接口。它必须易于让 C 应用调用这个解释器,并易于让它们用特定于应用的命令来扩展内置的命令。这个因素是我决定不使用 Lisp 作为命令语言的原因之一:Lisp 的基本数据类型和存储管理机制与 C 实在是不同,很难在它们之间建立清晰而简单的接口。对 Tcl 我使用了对于 C 自然的数据类型(字符串)。

    Tcl 的基本语法类似于 UNIX shell:命令由用空格或 TAB 分隔的一个或多个字段组成。个字段是命令的名字,它可以是内置命令、特定于应用的命令、或者是由一系列的 Tcl 命令组成的过程。在个后面的字段都作为参数传递给命令。如同在 UNIX shell 中那样,换行字符用做命令分隔符,分号也可用来分隔在同一行上的命令。不同于 UNIX shell,每个 Tcl 命令返回一个字符串结果,或者是空串,如果不适宜返回值的话。

    在 Tcl 中有四个补充的语法构造,它们给予语言一种类似 Lisp 的风格。使用花括号来组合复杂的参数;它们充当可嵌套的引用字符。如果参数的个字符是左花括号,则这个参数不以空白终结。转而,它终结于相匹配的右花括号。传递给这个命令的参数由在花括号中间的所有东西组成,并剥除围绕的花括号。例如,命令

    set a {dog cat {horse cow mule} bear}

    将收到两个参数:"a"和"dog cat {horse cow mule} bear".这个特定命令将把变量 a 设置为等于第二个参数的一个字符串。如果参数包围在花括号中,则不对这个参数做下面描述的其他替换。花括号常见的用途是把一个 Tcl 子程序指定为到 Tcl 命令的参数。

    在 Tcl 中第二个语法构造是是方括号,它用于引发命令替换。如果在参数中出现了左方括号,则从这个左方括号一直到相匹配的右方括号的所有东西都作为一个命令来对待,并由 Tcl 解释器递归的执行。命令的结果接着替换到这个方括号包围的字符串所在的位置上。例如,考虑命令

    set a [format {Santa Claus is %s years old} 99]

    format 命令做类似 printf 的格式化并返回字符串"Santa Claus is 99 years old",接着把它传递给 set 并赋值到变量 a.第三个语法构造是美元号,它用于变量替换。如果它出现在参数中,则随后的字符作为变量的名字对待;变量的内容被替换到参数中这个美元符号和名字所在的位置上。例如,命令

    set b 99

    set a [format {Santa Claus is %s years old} $b]

    导致 a 有同前面段落中的简单命令相同的终值。变量替换不是严格必须的,因为有其他方式来达到相同的效果,但是它减少了键入。

    一个语法构造是反斜杠字符,可以用它把特殊字符插入到参数中,比如花括号或非打印字符。

    在 Tcl 中只有一种数据类型:字符串。所有命令、到命令的参数、命令返回的结果和变量的值都是 ASCII 字符串。ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今通用的单字节编码系统,并等同于国际标准ISO/IEC 646.ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。 Tcl 始终使用字符串便于在 Tcl 库过程和包围它的应用的 C 代码之间来回传递信息。这使它易于在不同类型的机器之间来回传递有关 Tcl 的信息。

    尽管在 Tcl 中所有的东西都是字符串,很多命令都希望它们的字符串参数有特定的格式。这里的字符串有三种特定的通用格式:列表、表达式和命令。列表只是包含用空白分隔的一个或多个字段的字符串,类似于命令。可以使用花括来包围复杂的列表元素;这些复杂的列表元素自身经常也是列表,类似于 Lisp.例如,字符串

    dog cat {horse cow mule} bear

    是有四个元素的一个列表,其中第三个元素是有三个元素的列表。Tcl 提供一组列表操纵的命令,比如建立列表、提取元素、和计算列表长度。

    字符串的第二种常见形式是数值表达式。Tcl 表达式同 C 中的表达式有着同样的操作符合优先级。Tcl 命令  expr 把字符串作为表达式来求值并返回结果(当然是作为字符串)。例如,命令

    expr {($a < $b) || ($c != 0)}

    在变量 a 小于变量 b 或者变量 c 是零的时候返回"1",否则返回"0".一些其他的命令,比如 if 和 for, 期望它们的一个或多个参数是表达式。

    字符串的第三种常见解释是命令(或命令的序列)。这种形式的参数用在实现控制结构的 Tcl 命令中。例如,考虑下列命令:

    if {$a < $b} {

    set tmp $a

    set a $b

    set b $tmp

    }

    这里的 if 命令接受两个参数,每个都是用花括号界定的。If 是内置命令,它把它的个参数作为表达式来求值;如果结果非零,则 if 把它的第二个参数作为 Tcl 命令执行。这个特定命令在变量 a 小于 b 的时候交换 a 和 b 的值。

    Tcl 还允许用户定义用 Tcl 语言写的命令过程。我称谓这些过程为 tclproc,为的是区别于用  C 写成的其他过程。使用 proc 内置命令来建立 tclproc.例如,下面定义了一个递归的阶乘过程的 Tcl 命令:

    proc fac x {

    if {$x == 1} {return 1}

    return [expr {$x * [fac [expr $x-1]]}]

    }

    proc 命令接受三个参数:新 tclproc 的名字、一个变量名字的列表(在这个实例中试只有一个元素 x 的列表),和一个构成 tclproc 的过程体的 Tcl 命令。一旦执行了这个 proc 命令,fac 就可以同其他 Tcl 命令一样调用了。例如

    fac 4

    将返回字符串"24".

    尽管内置 Tcl 命令可以令人信服的用作独立的编程系统,Tcl 实际上意图被嵌入到应用程序中。我已经建造了使用 Tcl 的几个应用程序,其中之一是针对 X 的叫做 mx 的一个基于鼠标的编辑器。在本文的余下部分,我将使用来自 mx 的例子来展示 Tcl 如何与包围它的应用进行交互。

    使用 Tcl 的应用程序用同特定应用有关的一些额外的命令来扩展内置命令。例如,时钟程序可以提供额外的命令来控制时钟如何显示和设置闹钟;mx 编辑器提供额外的命令来从磁盘读取文件,在窗口中显示它,选择和修改一定范围内的字节,和把修改后的文件写回磁盘。应用程序员只需要写特定于应用的命令;内置命令"的"提供编程能力和扩展能力。对于用户,特定于应用的命令表现的如同内置命令一样。

    Tcl和窗口应用

    可嵌入的命令语言如 Tcl 在窗口环境中提供了特别的好处。部分原因是在窗口环境中有很多交互式程序,部分的原因是在今天的窗口环境中可配置性是重要的,并且语言如 Tcl 提供了做重新配置的灵活性。Tcl 在窗口应用中可以用于两个目的: 配置应用的界面动作,配置应用的界面外观。在下面的段落中讨论这两个用途。

    Tcl的个用法是用于界面动作。理想的,对应用重要的每个事件都应当绑定上Tcl命令。每次击键、每次鼠标移动或鼠标按钮按下(或释放)、和每个菜单条目都应当关联上 Tcl 命令。

    当事件发生时,首先把它映射到它的 Tcl 命令上,接着通过把这个命令传递到 Tcl_Eval 来执行它。应用不应当直接接收任何动作;所有动作都应当首先通过 Tcl来传递。进一步,应用应当提供 Tcl 命令允许用户改变与任何事件相关联的 Tcl 命令。

    在交互式的窗口应用中,Tcl 的使用可能对于初级用户是不可见的: 他们将使用按钮、菜单和其他界面构件来操纵应用。但是,如果使用 Tcl 作为所有界面动作的中间媒介,则会产生两个好处。首先,使得写 Tcl 程序来重新配置界面成为可能。例如,用户将能够重新绑定击键、改变鼠标按钮、或把一个现存的操作替代为指定为一组 Tcl 命令或 tclproc 的更加复杂的操作。

    :

    展开全文
  • 主要介绍了基于Tcl语言配置简单网络环境过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 非常适合想要学习和练习tcl的小白做入门学习。Clif Flynt 开发了一套简单的自学工具 TclTour,共有 43 个短小课程,每个课程一般用 10 分钟就可以学习完成,对初学者来说是个较好的入门工具。不过在使用 TclTour ...
  • TCL语言的PPT

    2018-06-27 18:46:03
    TCL的PPT,简述TCL使用规范,在Linux操作系统下的基础操作
  • 之前看过一个华为tcl的手册,看过数字集成电路静态时序分析这门课,加上在时序...同时,tcl语言数据类型与其他语言不同,它默认数据类型为string类。 安装好vivado后会默认带一个vivado tcl shell,可以直接用...

            之前看过一个华为tcl的手册,看过数字集成电路静态时序分析这门课,加上在时序分析中用过一些,趁着双十一买了高亚军老师新出的《vivado/Tcl零基础入门与案例实战》

            Tcl是一门脚本语言,同时也是跟python类似的解释性语言,所谓的解释性语言就是执行时候顺序解释执行,而不需要编译,当然它也比较慢。同时,tcl语言数据类型与其他语言不同,它默认数据类型为string类。

            安装好vivado后会默认带一个vivado tcl shell,可以直接用这个来跑代码。

             也可以按照下面的方式来跑Tcl脚本(引用来自于数字集成电路静态时序分析),下面的博客都是在wish.exe上面跑的。

     1.Tcl基础知识

     1.1 Tcl的换行以及注释

            Tcl的常用写法就是一行代码一个指令,但是也可以在一行写多个指令,中间用;分开,但是加上;的语句执行结果不会被打印(类似于Matlab)。

    (System32) 1 % set x 1
    1
    (System32) 2 % set x 2
    2
    (System32) 3 % set x 1;set x 2
    2
    

            Tcl在注释时候需要在命令的第一个字符位置,分号可以表示一条指令的结束,所以注释#可以出现在两个位置,一行的开始分号的后面。多行注释这可以使用\。

            我们也可以发现如果分号右边是注释,它还是会返回分号左边指令的结果,所以我认为加上;的一行语句会打印最后一个有效的指令,这里注释没有意义,所以会打印最后一个指令输出结果为1。

            如果注释大段,有三种方式:if命令、花括号、proc过程。

    (System32) 1 % #一行的开始
    (System32) 2 % set x 1;#分号的后面
    1
    
    (System32) 3 % #123 \
    > 231
    
    
    (System32) 4 % #if方法
    (System32) 5 % if {0} {set x 10 ; set y 20;}
    
    
    (System32) 6 % #花括号
    (System32) 7 % set commment {set x 20; set y 20;}
    set x 20; set y 20;
    
    
    (System32) 8 % #proc过程,类似于函数,只有被调用才会出现。
    (System32) 9 % proc set_commment{}{set x 20; set y 10;}
    

    1.2 Tcl的变量和置换

            Tcl对于变量名没有严格要求,通过set来赋值,对于大小写敏感。

    set <变量名> <变量值>

            incr指令也能用来赋值

    incr  <变量名>  <变量值,若缺省变量名初始值为1,否则加上变量值>

    其中变量名以及变量值的数值都必须为整数

            Tcl报错会将错误信息保存在全局变量errorInfo

    puts  $errorInfo   

    打印错误信息的位置

    (System32) 1 % set x 1
    1
    (System32) 2 % incr y
    1
    (System32) 3 % incr y 1
    2
    (System32) 4 % incr y -1
    1
    (System32) 5 % incr y 0.1
    expected integer but got "0.1"
    (System32) 6 % puts $errorInfo
    expected integer but got "0.1"
        (reading increment)
        invoked from within
    "incr y 0.1"

    unset <变量名>

    取消定义的变量,如果未定义会报错 

    info exists <变量名>

    判断变量是否已经定义,若存在返回1,否则0

    info tclversion

    返回tcl版本

    info hostname

    返回主机名

    (System32) 1 % set x 1
    1
    (System32) 2 % info exist x
    1
    (System32) 3 % unset x
    (System32) 4 % unset y
    can't unset "y": no such variable
    (System32) 5 % info exist y
    0
    
    
    (System32) 6 % info tclversion
    8.6
    
    (System32) 7 % info hostname
    laptop-5bsbjpik
    

            变量的置换,时刻记住tcl里面数据类型以string为主,set x y并不会把y的变量值赋值给x,而是把y赋值给了x,如要一个$来获得y的变量值,即 set x $y,就会把y的变量值赋值给x,这就类似于c++里面的指针,可以类比y是一个对于它数值的指针,通过增加一个$用来访问指针对应地址空间的数值大小

            此外,Tcl对于变量名,会认为-以及.当做字符串分隔符来用,这个时候可以把变量名用{}括起来来避免报错。

    append <变量名> <变量值>

    这就相当于string的加号,直接在数值后面增加新数值位数

    (System32) 1 % set x 1
    1
    (System32) 2 % set y x
    x
    (System32) 3 % set y $x
    1
    (System32) 4 % set a-b 1
    1
    (System32) 5 % set z $a-b
    can't read "a": no such variable
    (System32) 6 % set z ${a-b}
    1
    (System32) 7 % set a.b 1
    1
    (System32) 8 % set z $a.b
    can't read "a": no such variable
    (System32) 9 % set z ${a.b}
    1
    (System32) 10 % append z 21
    121

           $在同一层级下执行时,只会发生一次置换(最右边的$)。 对于$$var,有两种方式解决,一种是通过subst指令,一种是通过[]([]用于命令置换)。

    (System32) 1 % set x  1
    1
    (System32) 2 % set y  x
    x
    (System32) 3 % puts $$y             ;#只执行最右边的$y
    $x
    
    
    (System32) 4 % subst $$y            ;#方法一,用subst
    1
    (System32) 5 % puts [set $y]        ;#方法二,用[]
    1
    (System32) 6 % puts [set [set y]]   ;# $y等价于[set y]
    1

            [ ]用于命令置换,通常与expr一起配合使用,表示将执行结果以表达式形式返回。

    (System32) 1 % set a 1
    1
    (System32) 2 % set b [$a*$a]
    invalid command name "1*1"
    (System32) 3 % set b [expr $a*$a]
    1

            反斜线置换\主要用于被当成特殊字符的换行符、空格、"["、"$"等,相当于c++字符串里面的\。

    (System32) 1 % set a \$a
    $a
    
    (System32) 2 % set b a[x]
    invalid command name "x"
    (System32) 3 % set b a\[a\]
    a[a]
    
    
    (System32) 4 % set a \\
    \
    
    
    (System32) 5 % set a \b
    
    (System32) 6 % set a \\b
    \b
    

    Tcl的置换只有两条规则,一是解析指令从左到右扫描一次,二是置换只会发生一层(即$$a只会置换右边的$a,左边的$被保存下来了)。

    1.3 Tcl的{}和" "

            { }里面的置换可能会被阻止(为什么是可能?如果是用来进行置换操作会阻碍里面的置换,但是如果用来做界限符比如if、循环语句、switch语句、数学表达式则不需要阻止);

            “ ”则不会被影响。

            同时使用时,最外层的符号决定一切!

    (System32) 1 % set b "you are a {$a}"
    you are a {1}
    (System32) 2 % set b {you are $a "$a" }
    you are $a "$a" 

    1.4 总结

    set  a   1赋值a=1
    incr a  1a=a+1
    incr  aa=1

    puts  $errorInfo   

    打印错误信息的位置

    unset  a

    取消定义的变量a,如果a未定义会报错 
    info exists a判断变量是否已经定义,若存在返回1,否则0

    info tclversion

    返回tcl版本

    info hostname

    返回主机名

    append a 1

    若a=1,现在a=11
    $$y若y=1,则返回$1
    subst $$y

    执行两次$

    puts "Hello World"打印Hello World
    set  a  [expr $c*$c]若c=2,将执行结果4,以表达式返回给a

    参考

    [1]vivado/Tcl零基础入门与案例实战

    [2]数字集成电路静态时序分析

    展开全文
  • [TCL]Tcl语言基礎教程(一)

    千次阅读 2019-12-31 20:14:21
    Tcl语言参考(一) Tcl("Tool Command Language",即工具命令语言;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言...

                                                Tcl语言参考(一)

     

           Tcl("Tool Command Language",即工具命令语言;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包

    含了两个部分:一个语言和一个库。

           首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些交互程序如文本编辑器、调试器和shell。它有一个简单

    的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。

    其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充

    (定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读

    取(按钮或菜单等)。


           Tcl和其他编程语言例如C不同,它是一种解释语言而非编译语言。Tcl程序由一系列Tcl命令组成,在运行时由Tcl解释

    器解释运行。


           Tcl有大量的用C/C++编写的扩展用于提供Tcl本身不具有的功能。其中使用最广泛的扩展是TK,TK提供了各种OS平台下

    的图形用户界面GUI(连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上)。另一个流行的扩展包是Exp-

    ect,它提供了通过终端自动执行命令的能力,例如passwd, ftp, telnet等命令驱动的外壳。

     

    一、Tcl程序基本结构

         1、基本语法

           Tcl有类似于shell的语法,一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白(空格或TAB)分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。Tcl解释器对一个命令的求值过程分为两部分:分析和执行。在分析阶段,Tcl 解释器运用规则识别出命令并把命令分成一个个独立的单词,同时进行必要的置换(substitution); 在执行阶段,Tcl 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。

           Tcl的命令名可以是内建的命令也可以是用户建的新命令,在应用程序中可用函数Tcl_CreateCommand来创建新的命令。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。另外关于Tcl的注释有一个特殊的要求:'#'必须出现在Tcl解释器期望命令的第一个字符出现的地方,才被当作注释。例如:

    set a 100           # Not a comment
    
    set b 101 ;         # this is a comment

           第一个例子中'#'及其后面的内容会被当作set 的参数而非注释从而导致参数个数错误;但第二个被解释为注释,因为'#'前面有一个分号,而分号和换行一样被看作是命令的分隔符。


    脚步命令:

    (1)eval命令

           eval命令是一个用来构造和执行TCL脚本的命令,其语法为:

    eval arg arg ...

           它可以接收一个或多个参数,然后把所有的参数以空格隔开组合到一起成为一个脚本,然后对这个脚本进行求值。

     

    (2)source命令

           source命令读一个文件并把这个文件的内容作为一个脚本进行求值。例如:

    source e:/tcl&c/hello.tcl

           注意路径的描述应该和UNIX相同,使用'/'而不是'\'。

     

         2、置换(Substitution)

    set x 10
    
    set y 100 + x

           上面命令执行后,y的值是“100 + x”而不是我们期望的110。这是因为Tcl解释器在分析命令时,把所有的命令参数都当作字符串看待,所以x 被看作了字符串“100 + x”的一部分。如果我们想使用x的值'10' ,就必须告诉Tcl解释器:我们在这里期望的是变量x的值,而非字符'x'。怎么告诉Tcl解释器呢,这就要用到Tcl语言中提供的置换功能。Tcl提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。


    (1)变量置换(variable substitution)

           变量置换由一个$符号标记,变量置换会导致变量的值而非变量(标识符)本身被插入到字符串中。

    set x 10
    
    set y 100 + $x

     

           这时,y的值还不是我们想要的值110,而是10+100,因为Tcl解释器把10+100看成是一个字符串而不是表达式;y要想得到值110,还必须用命令置换,使得Tcl会把10+100看成一个表达式并求值。


     

    (2)命令置换(command substitution)

           命令置换是由[]括起来的Tcl命令及其参数,命令置换会导致某一个命令的所有或部分单词(参数)被另一个命令的结果所代替。

    set x 10
    
    set y [expr 100+$x]

           这时,y的值就是110了。这里当Tcl解释器遇到字符'['时,它就会把随后的expr作为一个命令名,从而激活与expr对应的C/C++过程,并把expr命令中变量置换后得到的'10+110'传递给该命令过程进行处理。注意,[]中必须是一个合法的Tcl脚本,长度不限。[]中脚本的值为最后一个命令的返回值,例如:


     

           有了命令置换,实际上就表示命令之间是可以嵌套的,即一个命令的结果可以作为别的命令的参数。

     

    (3)反斜杠置换(backslash subtitution)

           Tcl语言中的反斜杠置换类似于C语言中反斜杠的用法,主要用于在单词符号中插入诸如换行符、空格、[、$等被Tcl解释器当作特殊符号对待的字符。例如:

    set msg multiple\ space

           如果没有'\'的话,Tcl会报错,因为解释器会把这里最后两个单词之间的空格认为是分隔符,于是发现set命令有多于两个参数,从而报错。加入了'\'后,空格不被当作分隔符,'multiple space'被认为是一个单词(word)。


    (4)双引号和花括号

           除了使用反斜杠外,Tcl提供另外两种方法来使得解释器把分隔符和置换符等特殊字符当作普通字符,而不作特殊处理,这就

    要使用双引号和花括号({})。Tcl解释器对双引号中的各种分隔符将不作处理,但是对换行符及$和[]两种置换符会照常处理。而在花括号中,所有特殊字符都将成为普通字符,失去其特殊意义,Tcl解释器不会对其作特殊处理。

     

    展开全文
  • TCL语言简述

    2021-05-25 07:52:45
    Tcl 是用于工具命令语言的一个解释器。它由作为基本命令解释器嵌入到工具(比如编辑器、调试器等)中的一个库包组成。Tcl 提供了(a)用于简单的文本命令语言的分析器,(b)一组内置的实用命令,和(c)一个 C 接口,工具...
  • Tcl语言基础,解析文件 摘要:unix 下使用TCL 脚本读取配置文件;错误处理. 关键词:TCL、配置文件、unix
  • 要编写Tcl脚本,必须学会两件事。第一:学会Tcl的语法。第二掌握在脚本中的独立命令。 脚本,命令和单词 Tcl脚本包含一条或更多的命令。命令通过换行符或分号隔开。每一条命令都包含一个或多个单词,第一个单词是...
  • TCL语言笔记:TCL基础语法

    千次阅读 2020-12-22 18:29:06
    Tcl 语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他 shell 语言一样,直接对每条语句顺次解释执行。Tcl 数据类型简单。对 Tcl 来说,它要处理的数据只有一种——字符串。Tcl 将...
  • TCL语言的学习资料,TCl那么知道吧,那就赶快来下载啊.
  • [TCL]Tcl语言基礎教程(二)

    千次阅读 2019-12-31 20:25:38
    Tcl语言参考(二) 二、Tcl变量数据类型 Tcl只支持一种数据类型:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。(然而字符串...
  • TCL语言(九)路径和文件(2009-12-28 16:33:33)标签:杂谈~/tcltk$ tclsh% file exists hello3.tcl1% file executable testit0% file pathtype ./hello3.tclrelative% set dir1 homehome% set dir2 brianbrian% set ...
  • TCL语言简介

    2014-08-13 20:47:03
    ns2中TCL语言简介,编写简单的脚本程序中常用的命令、表达式以
  • Tcl语言基本语法

    2020-01-17 19:43:59
    -Tcl中的注释需要以#开始,且#应位于命令位置的第一个字符,如果一行命令后接分号说明该行命令结束,再分号后加#也可起到注释作用 -Tcl中的续行通过反斜杠来实现,但反斜杠后不能跟其他字符 1.设置变量 建立一个...
  • Tcl语言教程_tcl_源码

    2021-09-30 07:23:12
    TCL语言学习经典教程,超级推荐!!!!!!!!!!!
  • TCL语言编程基础教程,非常适合新人上手。
  • [TCL]Tcl语言基礎教程(三)

    千次阅读 2019-12-31 20:50:59
    Tcl语言参考(三) 三、Tcl表达式 (1)操作数 Tcl表达式的操作数通常是整数或实数。整数一般是十进制的, 但如果整数前两个字符是0x则这个整数被看作是十六进制的。Tcl的实数的写法与ANSI C中完全一样。 ...
  • 比较全面的Tcl语言教程,很难找的,跟大家分享一下!
  • tcl语言教学

    2014-03-16 19:56:23
    tcl资源,语言手册,可以查询
  • TCL语言编译器安装及使用

    千次阅读 2020-06-15 10:04:56
    TCL语言编译器安装及使用https://jingyan.baidu.com/article/1612d5009a5a44e20e1eeee7.html找了很久找到的网页,很靠谱 https://jingyan.baidu.com/article/1612d5009a5a44e20e1eeee7.html 找了很久找到的网页,很...
  • Tcl语言参考.pdf

    2021-04-14 10:57:00
    Tcl语言参考.pdf
  • TCL语言中的执行顺序

    2021-04-30 15:03:23
    TCL语言的执行顺序是:先分组,再替换,最后执行 花括号中不准替换 双引号和花括号的作用都是分组,但是不同之处在于是否支持替换 语句的运行分3步走: 1、首先分组 2、其次替换 3、最后运行 $的作用是变量引导符,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,663
精华内容 13,865
关键字:

tcl语言

友情链接: S1.rar