当前位置:   article > 正文

TCL 语言基础_tcl语言

tcl语言


前言

Tcl 语言基础
冒号和分号将命令分开;
使用#号进行注释;在这里插入图片描述


一、Tcl 语法之替换

1. 三种变量替换方式:变量替换 $, 命令替换 [], 反斜杠替换 \

set x 10 # 定义变量x,并把x的值赋为10
set y x+100 # y的值是x+100,而不是110
set y $x+100 # y的值是10+100, 也不是110 用了变量替换
set y [expr $x+100]  # y的值是110, 用了命令替换
  • 1
  • 2
  • 3
  • 4

注意:

**1. 变量替换 :**变量名由$后面的所有字母、数字和下划线组成。 遇到 非 字母、数字和下划线就会终止;

set x 10 # 定义变量x,并把x的值赋为10
set y $x # y的值10
set x~ 11 # x~ 的值是11
set y $x~  # y的值是 10~
set y ${x~} # y的值是 11
set a "\$" # 将a设置成“$”, \阻止了$的替换,将$解析成字符$
set a \x48 # 对应\xhh
返回:H 十六进制的4872,对应字符H
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

**2. 命令替换:**如果一个单词以字符串{*} 开头,之后紧接着非空白字符, Tcl会移除开头的{*},把该单词的剩余部分作为含有单词分隔符的语句进行解析与替换。在替换之后,Tcl会再次解析这些单词,但不进行替换,校验确定他们的确是一个或多个语法完整的单词。如果校验通过,这些单词会被独立地假如命令行进行处理;否则, Tcl会报语法错误。

% glob *v # 查找 .v 文件
返回: a.v  b.v  c.v 注意这几个文件包含了space
% file delete [glob *v] #想删除所有.v 文件,但是没成功,
% ls
返回: a.v  b.v  c.v %_command.log
% file delete {*}[glob *v] #加上 {*}, 删除成功
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3. 阻止解析器对$和分号等特殊字符进行特殊处理,这些方法称为引用,包括 反斜杠\ ,双引号“”,大括号{}
在这里插入图片描述

在这里插入图片描述

2. 对于变量:需要注意的

  • 无需声明定义, 直接使用set进行创建,unset移除,变量包含变量名和变量值
  • 使用$进行调用
  • 区分大小写
  • 变量名和变量值 都可以由任意字符组成,建议使用字母开头,使用字母/下划线/加数字 进行命名
  • 常用的变量类型:string list array directionary, S公司专有的collection
  • 变量存储类型 分为 字符串表达形式 和 内部表达形式(整数,实数,名称,列表,Tcl脚本)

2.1 string命令

如果你要把某个简单变量当字符串处理看待,可以使用string命令提供的功能
在这里插入图片描述
1. string match

匹配方式使用的是glob-style
string match ?-nocase? Pattern string 
如果pattern匹配string,返回1,否则返回0; 如果有-nocase参数,则不许分大小写
  • 1
  • 2
  • 3

在这里插入图片描述
2. string equal

  • string equal ?-nocase? ?-length int? string1 string2
    对两个字符串进行比较,如果他们严格相同(-exact),返回1,否则0, -length可以指定匹配的长度
    在这里插入图片描述

  • string compare ?-nocase? ?-length int? string1 string2
    对两个字符串进行比较,如果他们严格相同,返回0; 如果第一个字符串 在字典中 先于 第二个字符串,返回-1;否则返回1。 -length可以指定匹配的长度
    在这里插入图片描述

  • string length string1
    返回字符串的长度。 空格,换行符也算一个字符
    在这里插入图片描述

  • string range string first last
    与string index相似,只不过他需要两个索引,返回first到last之间的字符。如果first小于0,则按0处理; last也是类似
    在这里插入图片描述

  • string index string charlndex
    在这里插入图片描述

  • string replace string first last ?newstring?
    使用newstring替换first到last位置的字符,如果呢我string不存在,则将first到last的字符删除,如果first > last ,则不进行替换
    在这里插入图片描述

    • string map ?-nocase? mapping string
      将string中出现的所有关键字置换为响应的值。置换的按顺序进行的列表中先出现的关键字先处理。
      只对字符串迭代一次,所以前面进行置换的不会影响接下来的匹配查找。
      在这里插入图片描述
  • string trim string ?chars?
    将string开头和结尾出现的要裁剪的字符都删掉; 从两端开始,如果字符是i或d或c,则裁掉。如果是针对字符,而不是字符串idc
    在这里插入图片描述

  • string trimleft string ?chars?
    将string开头出现的要裁剪的字符都删掉

  • string trimright string ?chars?
    将string开头出现的要裁剪的字符都删掉
    在这里插入图片描述

  • string tolower string ?first? ?last?
    将first到last位置的字符串改成小写
    在这里插入图片描述

  • string toupper string ?first? ?last?
    将first到last位置的字符串改成大写
    在这里插入图片描述

  • string toupper string ?first? ?last?
    将first到last位置的字符串改成标题式格式(首字母大写)
    在这里插入图片描述

  • string repeat string count
    在这里插入图片描述

  • string reverse string
    在这里插入图片描述

2.2 list

创建 list 的三种方法
在这里插入图片描述
list 相关命令
在这里插入图片描述

  • llength list
    在这里插入图片描述

  • lrange list first last
    在这里插入图片描述

  • list ?index…?
    在这里插入图片描述

  • linsert list index value ?value…? list 指定位置插入新元素
    在这里插入图片描述

  • lset varName ?index…? newValue 将变量varName中的index位置的元素改成newValue
    在这里插入图片描述

  • lreplace list first last ?value value…? 把list中从first到last的元素换成零个或者多个元素
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

2.3 search

在这里插入图片描述

2.4 array

在这里插入图片描述

2.5 expr命令, 基本与verilog相同

在这里插入图片描述

二、Tcl的匹配方式

1.三种匹配方式: exact, glob 和正则表达式

严格通配 exact:是指两个字符串必须完全相同,这里不允许通配符出现

想要匹配 "hello world"
exact "hello world" #匹配成功.
exact "hello*" #匹配 失败
glob "hello*" #匹配成功
  • 1
  • 2
  • 3
  • 4

glob-style的通配方式:
在这里插入图片描述
正则表达式如下
在这里插入图片描述

三、流控制

1. if 条件控制

  • if expr1 body1 elseif expr2 body2 elseif … ?else? ?bodyN?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. while 循环

  • while test body
    参数test是一个表达式,body是一个脚本。如果表达式结果为非零,则运行脚本,知道表达式等于零才停止循环。此时while命令中断并返回一个空字符串。
    在这里插入图片描述

3. foreach

在这里插入图片描述

4. switch 相当于verilog中的case

在这里插入图片描述

5. break 和continue和C语言一样

在这里插入图片描述

四、函数

1. 函数的基本结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

五、文件操作 useful

eof 是判断是否到末端的意思
gets $rfile_handle line 是读出该文件的一行

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

六、常用命令

source + 脚本 表示可以让脚本吃进
info 判断一个变量的存在
在这里插入图片描述

七、脚本解读

功能:自动对齐
查找文件最小值:
在这里插入图片描述
查找文件最大值:
在这里插入图片描述
在这里插入图片描述
awk 把第七个元素找出来,元素是以空格隔开的
在这里插入图片描述


总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/655100
推荐阅读
相关标签
  

闽ICP备14008679号