TCL 常用语法

1. regsub 模式匹配替换命令

    语法: regsub ?switches? pattern string subspec varname

    注: ?..?之间的选项表示可选的.

    pattern: 表示要匹配的模式.

    string:表示要进行匹配的源字符串.

    subspec: 表示要将pattern进行替换的字符串.

    varname: 表示匹配的结果存放的变量.

    例子:

        set Str 192.168.0.1

        regexp -all "//." $Str "_" Str

        这里将IP地址中的.号替换成了_线,并将匹配的结果保存到变量Str中.

 

2. global 全局变量引用命令

    当你在全局的范围中定义了一个命令, 而你在另外一个函数中要引用到这个变量时,就要在函数体内用global命令进行声明,

    例如:

        set ipaddr 192.168.1.5

        proc Recvpacket {args} {

             global ipaddr

        }

 

3. 数组

   TCL支持数组的数据结构.

   1> 一维数组定义

       set net(ipaddr) 192.168.1.1

       puts $net(ipaddr)

   2> 二维数组的定义

       set net(private,pubip) 137.117.18.129

       puts $net(private,pubip)

4. 函数(过程)定义

   语法: proc 函数名 {参数名} {  }

    注意: 这里的参数名可以不填,这样可以进行参数的过程调用;但是{}号不参省.

    proc Add {a b} {

    }

    proc $a $b

 

5. 逻辑表达式

   与:&&

   或: ||

    例子: if { $a==1 && $b==2 } {  }

6. 字符串操作

    string length

    例子: set strLen [string length $myname]

    append : 字符串的串接

     set name [append $xin $ming]

    另外一种字符串串接的方法:

    set st1 Hello
    set st2 "${st1} World/a"

    ==>str2="Hello World"

   

7. expect

    expect 属于一种交互性的语言:即根据当前的输出来决定输入.

     expect {

           "*User name:" { input username }

           timeout {   timeout event    }

     }  

     这有点儿像C语言中的Case语句.timeout表示多少时间内没有匹配到分支中的任何一个字符串,则执行timeout这个分支   的语句块.

 

8. 循环语句

    语法: foreach loopVar valueList commandBody

    这个语句每次从valueList中取出一下数值赋于loopVar, 然后执行后面的命令块.

    例子:

    foreach name $EnglishClass {

          puts $name

    }

 

9. if/else

    语法:

    if {condition is true} {

    }else {

    }

   或

    if {condition is true} {

    }elseif{

    }

10: 分支语句switch

   语法:

   switch flags value pat1 body1 pat2 body2 ...

   flags可以是-exact -glob -regexp --

   -exact : value必须完全匹配下面其中的一个正则表达式.

    -regexp : Use regular expression pattern matching

    --: no flags.

    例子:

    switch -exact -- $value {
         foo { doFoo; incr count(foo) }
         bar { doBar; return $count(foo)}
         default { incr count(other) }
     }  

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值