学习日志之TCL脚本语言——基础知识

TCL是一种功能强大的脚本语言,其多用于自动化以及GUI的开发。脚本语言与其他高级语言的主要优势在于其简单明了,容易入门,且开发周期短。其运行不是编译执行而是解释执行,这就意味着这种语言在执行时会占用更多的硬件资源,但是对于日常对这种要求不是很严苛的控制执行要求而言脚本语言是一种能极大程度提升工作效率的工具语言。脚本语言与各种基础语言也会有相应的接口,例如java script, Python中有一个tk的库,另外还有C++之类的,这样就可以在不同的情况下发挥基础语言和脚本语言各自的优势。

首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。
其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。

TCL运行语法规则:运作的过程中只需要一个解释器解释其命令要做的东西,其所有的指令数据什么的全都是string,但是这里string分为三类command, expression, list

其语言格式如下:

command arg1 arg2....

1.设置变量

#set 变量名 值

set a 12

2. 输出显示

#puts 输出内容

puts $a
puts "hello word!"

3.对于分隔符号的使用

" "——一般用来括字符串,在这两串个引号之间可以用$表达需要显示的变量的值

{ }——用来括command后面的参数,每一个参数注意一定要用空格分开

[ ]——在已经有{}时候括在{}的外层分隔参数

注意:在使用puts输出的时候只有" "可以用$表示变量,但是在其他用途中比如expr中其他俩可以用$表示变量

set z "Rome"
set z_label "the capital of Italy is:"

puts "$z_label $z"
puts {$z_label $z}
puts {$z_label "$z"}

其输出分别为

the capital of Italy is: Rome
$z_label $z
$z_label "$z"

4.表达式使用

表达式命令为expr其可以作为单独的指令用,也可以作为一个参数用在别的指令中

#单独使用
expr {1+2+3}
#变量赋值
set result [expr {$a+$b-$c}]

注意:表达式的运算符号中有两个等于,一个是==,另一个是eq。这两个等于有不同的用途,前一种是用于判断两个值是不是相等,算是一种逻辑运算,而后面的eq不是逻辑运算,其用途是判断两个string是不是一样,例如下面的代码中判断得到的值就不是一样的

expr {1 == 1.0}
expr {1 eq 1.0}

5.列表的定义和操作

#列表的定义(这三个都一样的意思)
set l {qwe eee 2213}
set l_2 {list ddd 1231}
set l_3 {split "1231.dwdniw.eqweq" "."}
#列表的操作
#末尾添加值
lappend lst 123

#检索对应的lst元素值
lindex $lst 3

#某一位上替换
#lst 列表名 元素索引号 新元素
lset lst 2 ciao

#用索引号搜索列表元素值
#lsearch 列表变量 元素索引号
lsearch $lst 3

#列表排列(默认按首字母ASCII排序)
lsort {1 2 10}

#列表排序(元素按值大小排序)
lsort -integer {1 2 10}

#合并列表内的列表
set lst {concat {1 2 3} {2 3}}

6.判断语句

if { $a < 4 } {
set result 123
} else {
set result 345
}

7.while循环

while { $a < 3 } {
puts "the value of a is $a"
#set a [expr {$a+1}]
incr a
}

这里incr是加1的指令和上面的set是一个意思

8.for循环

for {set i 0} {$i < 9} {incr i} {
puts "fuck you!!!"
}

9.元素循环

foreach element $l {
puts $element
}

10.子程序

proc my_sum {x y} {                                                                                                             set result [expr {$x + $y}]
        return $result
}

当然这些只是基本用法,用来写作业啥的够用了= =。。

附上command大全

http://tcl.tk/man/tcl8.5/TclCmd/contents.htm

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值